欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python使用Flask實現RESTful API,使用Postman工具

系統 1736 0

RESTful是一種API設計規范。
在RESTful架構中,主要使用POST,DELETE,PUT和GET四種HTTP請求方式分別對指定的URL資源進行增刪改查操作。

RESTful之前的做法:

            /users/query/1 GET 根據用戶id查詢用戶數據
/users/save POST 新增用戶
/users/update POST 修改用戶信息
/users/delete GET/POST 刪除用戶信息
          

RESTful做法:

            /users/1 GET 根據用戶id查詢用戶數據
/users POST 新增用戶
/users PUT 修改用戶信息
/users DELETE 刪除用戶信息
          

客戶端的每一次請求,服務器都會給出回應,回應包括 HTTP 狀態碼和數據兩部分。
部分狀態碼:
GET: 200 OK
POST: 201 Created
PUT: 200 OK
DELETE: 204 No Content

?

使用Flask實現一個RESTful API服務的例子

            
              from
            
             flask 
            
              import
            
            
               Flask,jsonify,abort,make_response,request

            
            
              from
            
             flask_httpauth 
            
              import
            
            
               HTTPBasicAuth

app 
            
            = Flask(
            
              __name__
            
            
              )
auth 
            
            =
            
               HTTPBasicAuth()

users 
            
            =
            
               [
    {
        
            
            
              '
            
            
              id
            
            
              '
            
            : 1
            
              ,
        
            
            
              '
            
            
              username
            
            
              '
            
            : 
            
              '
            
            
              小明
            
            
              '
            
            
              ,
        
            
            
              '
            
            
              sex
            
            
              '
            
            : 1
            
              
    },
    {
        
            
            
              '
            
            
              id
            
            
              '
            
            : 2
            
              ,
        
            
            
              '
            
            
              username
            
            
              '
            
            : 
            
              '
            
            
              小紅
            
            
              '
            
            
              ,
        
            
            
              '
            
            
              sex
            
            
              '
            
            
              : 0
    }
]


            
            
              #
            
            
              訪問前需要提供用戶名和密碼
            
            
              @auth.get_password

            
            
              def
            
            
               get_password(username):
    
            
            
              if
            
             username == 
            
              '
            
            
              admin
            
            
              '
            
            
              :
        
            
            
              return
            
            
              '
            
            
              123456
            
            
              '
            
            
              return
            
            
               None


            
            
              #
            
            
              友好的錯誤提示:沒有權限
            
            
              @auth.error_handler

            
            
              def
            
            
               unauthorized():
    
            
            
              return
            
             make_response(jsonify({
            
              '
            
            
              error
            
            
              '
            
            : 
            
              '
            
            
              未授權
            
            
              '
            
            }), 403
            
              )


            
            
              #
            
            
              友好的錯誤提示:找不到資源頁面
            
            
@app.errorhandler(404
            
              )

            
            
              def
            
            
               not_found(error):
    
            
            
              return
            
             make_response(jsonify({
            
              '
            
            
              error
            
            
              '
            
            : 
            
              '
            
            
              找不到資源
            
            
              '
            
            }), 404
            
              )


            
            
              #
            
            
              返回所有用戶的記錄
            
            
@app.route(
            
              '
            
            
              /api/v1.0/users
            
            
              '
            
            , methods=[
            
              '
            
            
              GET
            
            
              '
            
            
              ])
@auth.login_required 
            
            
              #
            
            
              需要認證
            
            
              def
            
            
               get_users():
    
            
            
              return
            
             jsonify({
            
              '
            
            
              users
            
            
              '
            
            
              : users})


            
            
              #
            
            
              返回一個用戶的記錄記錄
            
            
@app.route(
            
              '
            
            
              /api/v1.0/users/
              
            
            
              '
            
            , methods=[
            
              '
            
            
              GET
            
            
              '
            
            
              ])
@auth.login_required

            
            
              def
            
            
               get_user(user_id):
    user 
            
            = list(u 
            
              for
            
             u 
            
              in
            
             users 
            
              if
            
             u[
            
              '
            
            
              id
            
            
              '
            
            ] ==
            
               user_id)
    
            
            
              if
            
             len(user) ==
            
               0:
        abort(
            
            404
            
              )
    
            
            
              return
            
             jsonify({
            
              '
            
            
              user
            
            
              '
            
            
              : user[0]})


            
            
              #
            
            
              插入一條用戶記錄
            
            
@app.route(
            
              '
            
            
              /api/v1.0/users
            
            
              '
            
            , methods=[
            
              '
            
            
              POST
            
            
              '
            
            
              ])
@auth.login_required

            
            
              def
            
            
               create_user():
    
            
            
              if
            
            
              not
            
             request.json 
            
              or
            
            
              not
            
            
              '
            
            
              username
            
            
              '
            
            
              in
            
             request.json 
            
              or
            
            
              not
            
            
              '
            
            
              sex
            
            
              '
            
            
              in
            
            
               request.json:
        abort(
            
            400
            
              )
    user 
            
            =
            
               {
        
            
            
              '
            
            
              id
            
            
              '
            
            : users[-1][
            
              '
            
            
              id
            
            
              '
            
            ] + 1
            
              ,
        
            
            
              '
            
            
              username
            
            
              '
            
            : request.json[
            
              '
            
            
              username
            
            
              '
            
            
              ],
        
            
            
              '
            
            
              sex
            
            
              '
            
            : request.json[
            
              '
            
            
              sex
            
            
              '
            
            
              ]
    }
    users.append(user)
    
            
            
              return
            
             jsonify({
            
              '
            
            
              user
            
            
              '
            
            : user}), 201


            
              #
            
            
              更新一個用戶的記錄
            
            
@app.route(
            
              '
            
            
              /api/v1.0/users/
              
            
            
              '
            
            , methods=[
            
              '
            
            
              PUT
            
            
              '
            
            
              ])
@auth.login_required

            
            
              def
            
            
               update_user(user_id):
    user 
            
            = list(u 
            
              for
            
             u 
            
              in
            
             users 
            
              if
            
             u[
            
              '
            
            
              id
            
            
              '
            
            ] ==
            
               user_id)
    
            
            
              if
            
             len(user) ==
            
               0:
        abort(
            
            404
            
              )
    
            
            
              if
            
            
              not
            
            
               request.json:
        abort(
            
            400
            
              )   
    user[0][
            
            
              '
            
            
              username
            
            
              '
            
            ] = request.json.get(
            
              '
            
            
              username
            
            
              '
            
            , user[0][
            
              '
            
            
              username
            
            
              '
            
            
              ])
    user[0][
            
            
              '
            
            
              sex
            
            
              '
            
            ] = request.json.get(
            
              '
            
            
              sex
            
            
              '
            
            , user[0][
            
              '
            
            
              sex
            
            
              '
            
            
              ])
    
            
            
              return
            
             jsonify({
            
              '
            
            
              user
            
            
              '
            
            
              : user[0]})


            
            
              #
            
            
              刪除一個用戶的記錄
            
            
@app.route(
            
              '
            
            
              /api/v1.0/users/
              
            
            
              '
            
            , methods=[
            
              '
            
            
              DELETE
            
            
              '
            
            
              ])
@auth.login_required

            
            
              def
            
            
               delete_user(user_id):
    user 
            
            = list(u 
            
              for
            
             u 
            
              in
            
             users 
            
              if
            
             u[
            
              '
            
            
              id
            
            
              '
            
            ] ==
            
               user_id)
    
            
            
              if
            
             len(user) ==
            
               0:
        abort(
            
            404
            
              )
    users.remove(user[0])
    
            
            
              return
            
             jsonify({
            
              '
            
            
              result
            
            
              '
            
            : True}),204



            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :
    app.run(debug
            
            =True)
          

?

上面例子,也可以使用Flask-RESTful實現

            
              from
            
             flask 
            
              import
            
            
               Flask,jsonify,abort,make_response,request

            
            
              from
            
             flask_httpauth 
            
              import
            
            
               HTTPBasicAuth

            
            
              from
            
             flask_restful 
            
              import
            
            
               Api,Resource,reqparse

app 
            
            = Flask(
            
              __name__
            
            
              )
api 
            
            =
            
               Api(app)
auth 
            
            =
            
               HTTPBasicAuth()

users 
            
            =
            
               [
    {
        
            
            
              '
            
            
              id
            
            
              '
            
            : 1
            
              ,
        
            
            
              '
            
            
              username
            
            
              '
            
            : 
            
              '
            
            
              小明
            
            
              '
            
            
              ,
        
            
            
              '
            
            
              sex
            
            
              '
            
            : 1
            
              
    },
    {
        
            
            
              '
            
            
              id
            
            
              '
            
            : 2
            
              ,
        
            
            
              '
            
            
              username
            
            
              '
            
            : 
            
              '
            
            
              小紅
            
            
              '
            
            
              ,
        
            
            
              '
            
            
              sex
            
            
              '
            
            
              : 0
    }
]


            
            
              #
            
            
              驗證字段的合法性
            
            
parser =
            
               reqparse.RequestParser()
parser.add_argument(
            
            
              '
            
            
              username
            
            
              '
            
            , type = str, required = True, help = 
            
              '
            
            
              此字段格式有問題
            
            
              '
            
            , location = 
            
              '
            
            
              json
            
            
              '
            
            
              )
parser.add_argument(
            
            
              '
            
            
              sex
            
            
              '
            
            , type = int, default = 
            
              "
            
            
              1
            
            
              "
            
            , location = 
            
              '
            
            
              json
            
            
              '
            
            
              )  


            
            
              #
            
            
              訪問前需要提供用戶名和密碼
            
            
              @auth.get_password

            
            
              def
            
            
               get_password(username):
    
            
            
              if
            
             username == 
            
              '
            
            
              admin
            
            
              '
            
            
              :
        
            
            
              return
            
            
              '
            
            
              123456
            
            
              '
            
            
              return
            
            
               None


            
            
              class
            
            
               UserListAPI(Resource):
    decorators 
            
            =
            
               [auth.login_required]   

    
            
            
              def
            
            
               get(self):
        
            
            
              return
            
             {
            
              '
            
            
              users
            
            
              '
            
            
              : users}

    
            
            
              def
            
            
               post(self):
        args 
            
            =
            
               parser.parse_args()
        user 
            
            =
            
               {        
            
            
            
              '
            
            
              id
            
            
              '
            
            : users[-1][
            
              '
            
            
              id
            
            
              '
            
            ] + 1
            
              ,
            
            
            
              '
            
            
              username
            
            
              '
            
            : args[
            
              '
            
            
              username
            
            
              '
            
            
              ],
            
            
            
              '
            
            
              sex
            
            
              '
            
            : args[
            
              '
            
            
              sex
            
            
              '
            
            
              ]
        }
        users.append(user)
        
            
            
              return
            
             {
            
              '
            
            
              user
            
            
              '
            
            : user}, 201


            
              class
            
            
               UserAPI(Resource):
    decorators 
            
            =
            
               [auth.login_required]    

    
            
            
              def
            
            
               get(self, id):        
        user 
            
            = list(u 
            
              for
            
             u 
            
              in
            
             users 
            
              if
            
             u[
            
              '
            
            
              id
            
            
              '
            
            ] ==
            
               id)
        
            
            
              if
            
             len(user) ==
            
               0:
            abort(
            
            404
            
              )
        
            
            
              return
            
             {
            
              '
            
            
              user
            
            
              '
            
            
              : user[0]}

    
            
            
              def
            
            
               put(self, id):
        user 
            
            = list(u 
            
              for
            
             u 
            
              in
            
             users 
            
              if
            
             u[
            
              '
            
            
              id
            
            
              '
            
            ] ==
            
               id)
        
            
            
              if
            
             len(user) ==
            
               0:
            abort(
            
            404
            
              )
        user 
            
            =
            
               user[0]
        args 
            
            =
            
               parser.parse_args()
        
            
            
              for
            
             k, v 
            
              in
            
            
               args.items():
            
            
            
              if
            
             v !=
            
               None:
                user[k] 
            
            =
            
               v
        
            
            
              return
            
              { 
            
              '
            
            
              user
            
            
              '
            
            
              : user }

    
            
            
              def
            
            
               delete(self, id):
        user 
            
            = list(u 
            
              for
            
             u 
            
              in
            
             users 
            
              if
            
             u[
            
              '
            
            
              id
            
            
              '
            
            ] ==
            
               id)
        
            
            
              if
            
             len(user) ==
            
               0:
            abort(
            
            404
            
              )
        users.remove(user[0])
        
            
            
              return
            
             {
            
              '
            
            
              result
            
            
              '
            
            
              : True}

api.add_resource(UserListAPI, 
            
            
              '
            
            
              /api/v1.0/users
            
            
              '
            
            , endpoint = 
            
              '
            
            
              users
            
            
              '
            
            
              )
api.add_resource(UserAPI, 
            
            
              '
            
            
              /api/v1.0/users/
              
            
            
              '
            
            , endpoint = 
            
              '
            
            
              user
            
            
              '
            
            
              )


            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :
    app.run(debug
            
            =True)
          

?

使用Postman測試接口

創建一個新的Request,Request name和Create Collection都隨便輸入如RESTfulAPI,保存后,自動打開名稱為RESTfulAPI的標簽頁。

(1)測試/api/v1.0/users的GET請求

RESTfulAPI標簽頁默認選擇 GET,輸入:localhost:5000/api/v1.0/users,這里直接點擊Send按鈕,Postman返回碼:Status:403 FORBIDDEN,返回內容

            {
"error": "未授權"
}
          

在Authorization標簽里面TYPE選擇Basic Auth,右邊Username和Password分別輸入admin和123456。

Python使用Flask實現RESTful API,使用Postman工具、requests庫測試接口_第1張圖片

?

?點擊Send按鈕,Postman返回碼:Status:201 CREATED,返回內容:

            {
  "users": [
    {
      "id": 1,
      "sex": 1,
      "username": "小明"
    },
    {
      "id": 2,
      "sex": 0,
      "username": "小紅"
    }
  ]
}
          

(2)測試/api/v1.0/users/ 的GET請求

修改Postman的請求方法和地址為:GET localhost:5000/api/v1.0/users/2

(3)測試/api/v1.0/users的POST請求

修改Postman的請求方法和地址為:POST localhost:5000/api/v1.0/users
在Body標簽里面選擇raw、修改最后的默認Text為JSON(application/json),下面輸入框填寫:

            {
	"id": 3,
	"sex": 1,
	"username": "小強"
}
          

點擊Send按鈕,Postman返回碼:Status:201 CREATED
把POST方法直接改為GET方法,可見返回3條記錄。

(4)測試/api/v1.0/users/ 的PUT請求

修改Postman的請求方法和地址為:PUT localhost:5000/api/v1.0/users/3
在Body標簽里面選擇raw、修改最后的默認Text為JSON(application/json),下面輸入框填寫:

            {
	"id": 3,
	"sex": 1,
	"username": "小剛"
}
          

點擊Send按鈕,Postman返回碼:Status:200 OK

(5)測試/api/v1.0/users/ 的DELETE請求

修改Postman的請求方法和地址為:DELETE localhost:5000/api/v1.0/users/3
點擊Send按鈕,Postman返回碼:Status:204 NOT CONTENT

?

使用Python的第三方庫requests測試接口

            
              import
            
            
               requests,json

url 
            
            = 
            
              '
            
            
              http://localhost:5000/api/v1.0
            
            
              '
            
            
              
auth 
            
            = (
            
              '
            
            
              admin
            
            
              '
            
            ,
            
              '
            
            
              123456
            
            
              '
            
            
              )


            
            
              #
            
            
              查詢
            
            
r=requests.get(url + 
            
              '
            
            
              /users
            
            
              '
            
            , auth=
            
              auth)

            
            
              print
            
            
              (r.status_code, r.text)

            
            
              #
            
            
              在控制臺輸出時中文會用unicode顯示,可用下面方法顯示中文
            
            
              
#
            
            
              print(json.dumps(json.loads(r.text),ensure_ascii=False))
            
            
              
r
            
            =requests.get(url + 
            
              '
            
            
              /users/1
            
            
              '
            
            , auth=
            
              auth)

            
            
              print
            
            
              (r.status_code, r.text)


            
            
              #
            
            
              更新
            
            
data =
            
               {
    
            
            
              "
            
            
              id
            
            
              "
            
            : 3
            
              ,
    
            
            
              "
            
            
              sex
            
            
              "
            
            : 1
            
              ,
    
            
            
              "
            
            
              username
            
            
              "
            
            : 
            
              "
            
            
              小強
            
            
              "
            
            
              
}
r
            
            =requests.post(url + 
            
              '
            
            
              /users
            
            
              '
            
            , auth=auth, json=
            
              data)

            
            
              print
            
            
              (r.status_code, r.text)


            
            
              #
            
            
              修改
            
            
data =
            
               {
    
            
            
              "
            
            
              id
            
            
              "
            
            : 3
            
              ,
    
            
            
              "
            
            
              sex
            
            
              "
            
            : 1
            
              ,
    
            
            
              "
            
            
              username
            
            
              "
            
            : 
            
              "
            
            
              小剛
            
            
              "
            
            
              
}
r
            
            =requests.put(url + 
            
              '
            
            
              /users/3
            
            
              '
            
            , auth=auth, json=
            
              data)

            
            
              print
            
            
              (r.status_code, r.text)


            
            
              #
            
            
              刪除
            
            
r=requests.delete(url + 
            
              '
            
            
              /users/3
            
            
              '
            
            , auth=
            
              auth)

            
            
              print
            
            (r.status_code, r.text)
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人18黄网站免费 | 男女性刺激爽爽免费视频 | 国产在线观看91一区二区三区 | 午夜亚洲| www.天天操| 天天躁日日躁aaaa视频 | 精品在线播放 | 91久久亚洲精品一区二区 | 久久福利青草精品资源 | 天天干天天干天天干天天干天天干 | 日本黄页免费大片在线观看 | 国产精品免费观看 | 日韩在线观看毛片 | 欧美精品久久久久久久久久 | 亚洲国产一区二区视频 | 久久一级| 色综合成人 | 国产精品久久久久不卡 | 高清视频一区 | 黄色免费视频观看 | www.色网站| 精品久久久久久免费影院 | 天天综合网站 | 99亚洲精品色情无码久久 | 天堂成人A片永久免费网站 奇米影视四色7777 | 日本高清免费zzzzzzzz | 国产成人免费 | videos韩国| 亚洲综合精品 | 男女性刺激爽爽免费视频 | 羞羞视频免费网站在线看 | 蜜桃视频成人 | 我要看真正的免费毛片 | 亚洲欧美无人区乱码 | 国产在线不卡 | 91中文字幕在线观看 | 剑来在线观看 | 欧美国产日本高清不卡 | 欧美一区二区在线免费观看 | 亚洲欧美小视频 | 91久久精品国产一区二区 |