日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中restful接口开发实例_Python RESTful接口开发02

發(fā)布時間:2023/12/10 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中restful接口开发实例_Python RESTful接口开发02 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是RESTful

RESTful是一種設計思想,一種風格。

RESTful主要包括 資源 和 對資源的操作。

資源: 對實體的抽象,圖書、音樂、電影、學生等都屬于資源。

對資源的操作:

========== ===================== ==================================

HTTP 方法 行為 示例

========== ===================== ==================================

GET 獲取資源的信息 http://example.com/api/students

GET 獲取某個特定資源的信息 http://example.com/api/students/123

POST 創(chuàng)建新資源 http://example.com/api/students

PUT 更新資源 http://example.com/api/students/123

DELETE 刪除資源 http://example.com/api/students/123

========== ====================== ==================================

使用Django開發(fā)一個簡單的RESTful風格接口

要實現(xiàn)的接口:

========== ===================== ================================================

請求方法 行為 接口地址

========== ===================== ================================================

GET 獲取資源的信息 http://127.0.0.1:8000/todo/api/v1.0/tasks

GET 獲取某個特定資源的信息 http://127.0.0.1:8000/todo/api/v1.0/tasks/123

POST 創(chuàng)建新資源 http://127.0.0.1:8000/todo/api/v1.0/tasks

PUT 更新資源 http://127.0.0.1:8000/todo/api/v1.0/tasks/123

DELETE 刪除資源 http://127.0.0.1:8000/todo/api/v1.0/tasks/123

========== ====================== ================================================

操作步驟:

創(chuàng)建項目(假設,你已經(jīng)熟練掌握如何創(chuàng)建項目),項目目錄結構如下: D:/writing/django_restuful -- 項目所在目錄

│ manage.py -- Django項目的管理文件

├─.idea --使用的是Pycharm創(chuàng)建,.idea是PyCharm的項目配置文件

│ │ django_restful.iml

│ │ misc.xml

│ │ modules.xml

│ │ workspace.xml

│ │

│ └─inspectionProfiles

│ profiles_settings.xml

├─api --創(chuàng)建的一個app

│ │ admin.py

│ │ apps.py

│ │ models.py

│ │ tests.py

│ │ views.py

│ │ __init__.py

│ │

│ └─migrations --每個app都有一個migrations包

│ __init__.py

├─django_restful --每個項目都有一個和項目名一致的包,包含配置文件、wsgi、跟路由urls

│ │ settings.py

│ │ urls.py

│ │ wsgi.py

│ │ __init__.py

│ │

│ └─__pycache__

│ settings.cpython-37.pyc

│ __init__.cpython-37.pyc

編寫api/views.py # coding:utf8

from django.views import View

from django.http import JsonResponse

import json

# 為了專注于演示接口的開發(fā),這里沒有使用數(shù)據(jù)庫,只是用了一個list作為存儲容器

tasks = [

{

'id': 1,

'title': u'Buy groceries',

'done': False

},

{

'id': 2,

'title': u'Learn Python',

'done': False

}

]

class TodoList(View):

def get(self, request):

"""獲取所有task"""

return JsonResponse(tasks, safe=False)

def post(self, request):

"""添加一個task"""

data = json.loads(request.body)

try:

task = {

"id": tasks[-1]['id'] + 1,

'title': data['title'],

'done': False

}

tasks.append(task)

except Exception as err:

return JsonResponse({{"errcode": 4001, "errmsg": "任務添加失敗"}})

else:

return JsonResponse(task, safe=False)

class Todo(View):

def get(self, request, task_id):

"""獲得某個task"""

task_id = int(task_id)

task = list(filter(lambda t: t['id'] == task_id, tasks))

if not task:

return JsonResponse({"code": 400})

return JsonResponse({'task': task[0]})

def delete(self, request, task_id):

"""刪除某個task"""

task_id = int(task_id)

task = list(filter(lambda t: t['id'] == task_id, tasks))

if task:

tasks.remove(task)

return JsonResponse({'result': True})

def put(self, request, task_id):

"""修改某個task"""

task_id = int(task_id)

data = json.loads(request.body)

task = list(filter(lambda t: t['id'] == task_id, tasks))

if len(task) == 0:

return JsonResponse({"code": 400})

if not data:

return JsonResponse({"code": 400})

if data.get('title') is None:

return JsonResponse({"code": 400})

if data.get('done') and type(data['done']) is not bool:

return JsonResponse({"code": 400})

task[0]['title'] = data.get('title', task[0]['title'])

task[0]['done'] = data.get('done', task[0]['done'])

return JsonResponse({'task': task[0]})

編寫api/urls.py from api import views

from django.urls import re_path

urlpatterns = [

re_path('^tasks/$', views.TodoList.as_view(), name='todolist'),

re_path('^tasks/(?P\d+)/$', views.Todo.as_view(), name='todo'),

]

編寫django_restful/urls.py from django.contrib import admin

from django.urls import path, include

urlpatterns = [

path('admin/', admin.site.urls),

path('todo/api/v1.0/', include('api.urls')),

]

編寫django_restful/settings.py MIDDLEWARE = [

...

'django.middleware.common.CommonMiddleware',

# 'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

....

]

注意:這里為了測試的方便,禁用了csrf,在實際項目中不要禁用,禁用的話不安全。Django 關于CSRF的問題不屬于本專題,有時間單獨介紹CSRF。

完整代碼

說明

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的python中restful接口开发实例_Python RESTful接口开发02的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。