精华内容
下载资源
问答
  • 自定义API

    2016-02-05 16:52:55
    自定义API...... case '中超': //载入库文件 include('simple_html_dom.php'); $html = file_get_html('http://www.zhiboba.cn/')//中超di

    自定义API

    ......
    case '中超':
                                //载入库文件
                                include('simple_html_dom.php');
                                $html = file_get_html('http://www.zhiboba.cn/')//中超div id
                                //读取文本
                                $contentStr = $res->plaintext;
                                //删除空格
                                $contentStr = trim($contentStr);
                                $resultStr = sprintf($newsTpl,$fromUsername,$toUsername,$time.$contentStr);
                                echo $resultStr;
                                break;
    ......
    展开全文
  • android SDK中添加自定义api 对应我的博客http://blog.csdn.net/a624731186 里面android SDK中添加自定义api文章
  • 自定义api通过aggregator注册进入k8s api系统,内部通过一个proxy转到对应的自定义api进程(放在pod中),  自定义API通过main函数,调用生成的zz_generated.api.register.go中的注册函数,此函数有一个全局变量Api...

    自定义api通过aggregator注册进入k8s api系统,内部通过一个proxy转到对应的自定义api进程(放在pod中), 

    自定义API通过main函数,调用生成的zz_generated.api.register.go中的注册函数,此函数有一个全局变量ApiVersion,apiversion中将我们定义的type(包括其deepcopy函数),还有版本转换函数conversion(zz_generated.conversion.go),默认值处理函数(zz_generated.defaults.go)注册进apiversion中,有些情况下也会注册deepcopy函数。(客户端的scheme也会调用并注册这些个转换函数)

     

    client中适用于服务client-go或者controller,client部分只有getter,即获取资源的interface。client中scheme会添加conversion和default函数,用于进行client的创建。客户端的crud会用scheme.ParameterCodec进行编码

    informer则用资源的数据结构注册informer,只有资源informer,有informer和lister接口。

    lister拥有获取资源的接口。

     

    展开全文
  • flask7:自定义API异常及全局异常捕捉

    千次阅读 2019-03-05 09:59:30
    1.自定义API异常 class APIException(HTTPException): code = 500 msg = 'sorry, we made a mistake (* ̄︶ ̄)!' error_code = 999 def __init__(self, msg=None, code=None, error_code=None, ...

    1.自定义API异常

    class APIException(HTTPException):
        code = 500
        msg = 'sorry, we made a mistake (* ̄︶ ̄)!'
        error_code = 999
    
        def __init__(self, msg=None, code=None, error_code=None,
                     headers=None):
            if code:
                self.code = code
            if error_code:
                self.error_code = error_code
            if msg:
                self.msg = msg
            super(APIException, self).__init__(msg, None)
    
        def get_body(self, environ=None):
            body = dict(
                msg=self.msg,
                error_code=self.error_code,
                request=request.method + ' ' + self.get_url_no_param()
            )
            text = json.dumps(body)
            return text
    
        def get_headers(self, environ=None):
            """Get a list of headers."""
            return [('Content-Type', 'application/json')]
    
        @staticmethod
        def get_url_no_param():
            full_path = str(request.full_path)
            main_path = full_path.split('?')
            return main_path[0]
    

    2.自定义异常码

    
    class Success(APIException):
        code = 201
        msg = 'ok'
        error_code = 0
    
    
    class DeleteSuccess(Success):
        code = 202
        error_code = 1
    
    
    class ServerError(APIException):
        code = 500
        msg = 'sorry, we made a mistake (* ̄︶ ̄)!'
        error_code = 999
    
    
    class ClientTypeError(APIException):
        # 400 401 403 404
        # 500
        # 200 201 204
        # 301 302
        code = 400
        msg = 'client is invalid'
        error_code = 1006
    
    
    class ParameterException(APIException):
        code = 400
        msg = 'invalid parameter'
        error_code = 1000
    
    
    class NotFound(APIException):
        code = 404
        msg = 'the resource are not found O__O...'
        error_code = 1001
    
    
    class AuthFailed(APIException):
        code = 401
        error_code = 1005
        msg = 'authorization failed'
    
    
    class Forbidden(APIException):
        code = 403
        error_code = 1004
        msg = 'forbidden, not in scope'
    

    3.在参数验证基类中增加抛出异常

    class BaseForm(Form):
        # 接收Jason参数
        def __init__(self):
            data = request.get_json(silent=True)
            args = request.args.to_dict()
            super(BaseForm, self).__init__(data=data, **args)
    
        # 对验证错误的参数抛出异常
        def validate_for_api(self):
            valid = super(BaseForm, self).validate()
            if not valid:
                # form errors
                raise ParameterException(msg=self.errors)
            return self

    4.通过AOP实现对全局异常的捕捉

    
    @app.errorhandler(Exception)
    def framework_error(e):
        if isinstance(e, APIException):
            return e
        if isinstance(e, HTTPException):
            code = e.code
            msg = e.description
            error_code = 1007
            return APIException(msg, code, error_code)
        else:
            # 调试模式
            # log
            if not app.config['DEBUG']:
                return ServerError()
            else:
                raise e
    

     

    展开全文
  • 简介 Node.js 是一个基于 Chrome V8 引擎的 ...Nodejs+Express可以让前端人员自定义API接口并实现调用。 这样写项目就方便多了,数据想怎么写就怎么写。过程1.新建项目文件夹 mkdir nodejs-express-react 2.初始化p

    简介

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
    Express 是基于Node.js 平台,快速、开放、极简的 web 开发框架。

    Nodejs+Express可以让前端人员自定义API接口并实现调用。
    这样写项目就方便多了,数据想怎么写就怎么写。

    过程

    1.新建项目文件夹

    mkdir nodejs-express-react

    2.初始化package.json

    cd nodejs-express-react && npm init

    3.安装需要的依赖

    • 全局安装babel webpack webpack-dev-server

      npm install babel webpack webpack-dev-server -g

    • 项目安装webpack webpack-dev-server html-webpack-plugin(在build里生成自动引用bundle.js的html文件)

      npm install webpack webpack-dev-server html-webpack-plugin –save

    • 项目安装express框架

      npm install express –save

    • 项目安装react和react-dom

      npm install react react-dom –save

    • 项目安装Babel转换器,解析jsx

      npm install babel babel-loader babel-core babel-preset-react babel-preset-latest –save

    • 项目安装jquery

      npm install jquery –save

    4.创建项目文件

    文档结构

    • webpack.config.js
    var webpack = require('webpack');
    var path = require('path');
    var HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
        entry:'./entry.js',
        output:{    
            path:path.join(__dirname, '/build'),  
            filename:"bundle.js"
        },
        devServer:{
            inline:true,
            port:3000
        },
        module:{
            loaders:[
                {        
                    test:/\.js?$/,
                    loader:'babel-loader',
                    query: {
                        presets: ['react', 'latest']
                    }
                }
            ]
        },
        plugins:[
            new HtmlWebpackPlugin({
                template:'./index.html'
            }),
            new webpack.HotModuleReplacementPlugin()//热加载
        ],
        resolve: {
            modules: [path.resolve(__dirname,'node_modules')]
        }
    }
    • .babelrc(jsx=>js配置)
    {
        "presets": [
            "latest",
            "react"
        ]
    }
    • index.html
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>demo</title>
      </head>
      <body>
          <div id="app"></div>
      </body>
    </html>
    
    • entry.js (react入口文件)
    import React from 'react';
    import ReactDOM from 'react-dom';
    import App from './App';
    
    ReactDOM.render(<App />, document.getElementById('app'));
    • server.js (express服务器文件)
    var express = require('express');
    var app = express();
    
    var _data = {
        "id":"1",
        "name":"zysoft",
        "sex":"男",
        "age":"23"
    }
    
    app.get('/introduce',function(req,res){
        res.send(_data);
    })
    
    app.listen(8888,function(){
        console.log('listening on *:8888');
    });
    
    • app.js(react组件文件)
    import React,{Component} from 'react';
    import $ from 'jquery';
    
    export default class App extends Component {
        componentDidMount(){
            $.get('http://localhost:8888/introduce',function(data){
                console.log(data);
            })  
        }
        render(){
            return(
                <p style={{
                    margin:'20px',
                    fontFamily:'幼圆'
                }}>按F12查看获取到的数据</p>
            )
        }
    }
    

    运行

    1.运行配置:在package.json中找到scripts标签,若没有则添加

      "scripts": {
        "dev": "webpack-dev-server --devtool eval --progress --colors --hot --content-base build",
        "build": "webpack",
        "server": "node server.js",
        "start": "start http://localhost:3000"
      },

    2.运行过程:(dev和server需要保留所以要开不止一个终端)

    • npm run build

      相当于执行webpack命令,会自行查找webpack.config.js,根据配置生成build文件夹,并在该目录下生成bundle.js和自行引用bundle.js的index.html文件

    • npm run server

      相当于执行node server.js 打开设定好的8888端口/开启服务。

    • npm run dev

      相当于执行webpack-dev-server –devtool eval –progress –colors –hot –content-base build,这句话可以使页面有热更新的功能,即更改完代码,不用重新打包并执行webpack-dev-server,在页面自行刷新查看更改后的结果。

    • npm start

      相当于执行start http://localhost:3000,自行打开浏览器并访问localhost:3000,查看结果。

    打开F12查看控制台信息。

    注意这里的报错:

    跨域问题

    很明显的跨域问题!

    有人说使用$.ajax() 把dataType属性设置为”jsonp”就可以解决,但是这样实行后会报错“Unexpected token :”,这是因为你写入的明明是json格式,用jsonp来解析当然会有格式的问题。这里不推荐使用此方案。

    主要的解决方案还是要在header上下功夫

    理解header原理:
    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
    http://kb.cnblogs.com/page/92320/

    Access-Control-Allow-Origin 允许的域
    Access-Control-Allow-Headers 允许的header类型

    打开我们的server.js,加入以下代码设置跨域访问:

    //设置跨域访问
    app.all('*', function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
        res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
        res.header("X-Powered-By",' 3.2.1')
        res.header("Content-Type", "application/json;charset=utf-8");
        next();
    });

    重新生成

    重新生成

    刷新页面

    最终结果

    获取到自定义的api数据就可以任意的在前端页面上展示了~

    github源码地址:https://github.com/zhaoyu69/nodejs-express-react

    有问题欢迎指出,如果有用 欢迎star★。

    展开全文
  • 自动生成自定义java API文档
  • 淘宝自定义API接口管理

    千次阅读 2017-06-12 17:17:32
    便于开发过程中自定义接口API进行调试。 使用过程中的问题: 1 返回某个指定值,如成功或失败 变量名:isValid|1,备注:@mock[1,0] 2 返回某个指定值彼此对应的值,如成功时为请求成功,或失败时为请求失败...
  • 1.创建ApiException.php 2.修改Handler.php 转载于:https://www.cnblogs.com/yangfei123/p/11289531.html
  • Laravel自定义Api接口全局异常处理

    千次阅读 2018-07-05 15:29:45
    在做API时,需要对一些异常进行全局处理,比如添加用户执行失败时,需要返回错误信息// 添加用户 www.bcty365.com $result = User::add($user); if(emptyempty($result)){ throw new ApiException('添加...
  • 本文即将要介绍的是,如何利用谷歌自定义搜索(亦即谷歌站内的搜索)去搭建一个百度网盘引擎搜索网站。与其说是百度网盘搜索引擎,倒不如说一个谷歌自定义http接口调用搜索百度网盘的项目。 首先,贴出我自己的...
  • laravel 中自定义 api 接口的错误消息

    千次阅读 2018-12-05 00:23:48
    当在laravel 中编写 api 接口时,throw new Exception() 返回的错误消息格式不是我们想要的格式 解决办法: 在 App\Exceptions目录下新建一个 ApiException类 继承 Exception  namespace App\Exceptions; ...
  • 一、自定义资源(CustomResourceDefinitions) 1.创建一个CRD对象 kubectl create -f website-crd.yaml apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: websites....
  • kafka自定义分区API

    千次阅读 2020-04-10 10:31:11
    /* 实现自定义分区 */ public class ProducerPartition implements Partitioner { @Override public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster...
  • vue自定义封装API组件

    千次阅读 2019-10-07 11:22:58
    vue自定义封装API组件 1.创建vue组件 <template> <div > <div class="alert"> <div class="alert-main" v-for="item in notices" :key="item.name"> <div class="alert-content"...
  • Laravel自定义封装Api接口

    千次阅读 2020-08-19 17:28:35
    namespace App\Helpers\Api; trait ApiResponse { /** * 成功的时候返回结果 * @param $data 返回数据集合 */ public function success($data) { return $this->api_response('200','操作成功',$data);....
  • 自定义WebAPI接口帮助文档

    千次阅读 2018-05-18 17:53:03
    环境:VS2013搭建项目框架如下:Web为WebAPI接口层,Model层用于存放接口的输入输出参数在网上参考了很多文档,把help page改造方法整理如下:1.使用nuget安装的最新的help pagevs2013在创建webAPI项目时是默认安装...
  • UE4中使用Carla——开发添加自定义PythonAPI1.简述2.开发添加自定义PythonAPI3.效果 1.简述 在这里,我们假定读者已经安装并对整体框架有了一定掌握,请参考下文安装配置和理解: UE4中使用自动驾驶模拟——Carla 在...
  • 自定义RequestMappingHandlerMapping实现API版本控制 一、问题起源 对于接口版本控制问题,最开始我是采用的@RequestMapping(headers=“Api-version=0.1”)的方式进行控制接口版本的,但是发现这样做会有一个问题...
  • * @Package com.jxkj.app.api.framework * @Description: TODO(用一句话描述该文件做什么) * @author gangyu * @date 2018年11月20日 下午4:07:58 * @version V1.0 */ package ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 637,245
精华内容 254,898
关键字:

自定义api