django框架-寫一個接口返回json

先介紹一個用來寫接口的django三方庫

djangorestframework
http://www.django-rest-framework.orgpython

workon python35
pip install djangorestframework

終端 切換環境python3.5的環境
安裝djangorestframeworkmysql

這個框架能夠自動生成接口文檔. 很是方便sql

pip安裝完畢數據庫

打開項目
修改settings.py 文件
添加app
'rest_framework_swagger',
'rest_framework',
修改成
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mytest',
'rest_framework_swagger',
'rest_framework',
]django

修改
urls.py文件json

from django.conf.urls import url
from django.contrib import admin
from rest_framework.schemas import get_schema_view

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^docs/', get_schema_view())
]

運行項目到8000端口api

訪問
http://127.0.0.1:8000/docs/
試試 發現默認的接口文檔頁面.瀏覽器

restframeworkschema.png服務器

在實際的項目中還會修改或定製這個頁面的樣式. 查詢restframework官網選你喜歡的風格吧...
我比較喜歡這個樣子.session

swagger0.png

模型轉json

iOS開發中通常是Json轉Model, 那麼返回來服務端必定是Model轉Json了.(其實json轉Model也挺經常使用的)
python3.5自帶json包 import json便可
我通常使用這個庫來作Model->Json django-simple-serializer

workon python35
pip install django-simple-serializer

接下來寫一個返回json的接口
在以前建立的項目中,打開mytest.views.py文件.
編輯文件爲

from django.shortcuts import render
from rest_framework.views import APIView
from dss.Serializer import serializer
from django.http import HttpResponse, HttpRequest
# Create your views here.
def response_as_json(data, foreign_penetrate=False):
    jsonString = serializer(data=data, output_type="json", foreign=foreign_penetrate)
    response = HttpResponse(
            # json.dumps(dataa, cls=MyEncoder),
            jsonString,
            content_type="application/json",
    )
    response["Access-Control-Allow-Origin"] = "*"
    return response


def json_response(data, code=200, foreign_penetrate=False, **kwargs):
    data = {
        "code": code,
        "msg": "成功",
        "data": data,
    }
    return response_as_json(data, foreign_penetrate=foreign_penetrate)


def json_error(error_string="", code=500, **kwargs):
    data = {
        "code": code,
        "msg": error_string,
        "data": {}
    }
    data.update(kwargs)
    return response_as_json(data)

JsonResponse = json_response
JsonError = json_error
class ReturnJson(APIView):

    def get(self, request, *args, **kwargs):
        return JsonResponse("Hello world!!!!!!!!++++++中文測試")

JsonResponse和JsonError是我編寫的兩個工具.用來返回Json,他們中將模型轉爲Json的工具dss就是 django-simple-serializer
邏輯寫好, 在urls中添加此接口.

修改與settings.py 文件同一目錄下的urls.py文件修改成

from django.conf.urls import url
from django.contrib import admin
from rest_framework.schemas import get_schema_view
from mytest.views import ReturnJson


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^docs/', get_schema_view()),
    url(r'^api/getjson', ReturnJson.as_view()),
]

運行項目
瀏覽器中輸入

http://127.0.0.1:8000/api/getjson

發現瀏覽器中顯示

{
    "msg": "\u6210\u529f",
    "data": "Hello world!!!!!!!!++++++\u4e2d\u6587\u6d4b\u8bd5",
    "code": 200
}

自此一個簡單的處理get請求的接口就完成了.

距離將項目實際部署到測試服務器還有多遠?

swagger配置
修改接口文檔訪問權限
修改接口文檔風格
將JsonResponse等等單獨封裝成tools
編寫工具解析request中的參數(get, post參數位置不一樣),
get, post, put, patch, delete他們與多種提交形式中參數如何獲取
http header Content-Type有不少種, 不一樣狀況參數如何獲取

application/x-www-form-urlencoded
multipart/form-data
application/json
text-plain

文件如何接收和存儲. 例如圖片上傳.
更換到mysql數據庫
異常捕獲
日誌系統
我的電腦環境與測試服務器環境與正式服務器環境如何區分.
購買服務器
配置服務器環境
持續集成相關配置與腳本編寫.

我暫時想到的就這些...

做者:行如風 連接:https://www.jianshu.com/p/2d60bf3faf37 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索