個人開發者快速開發自己的 API
我們個人在開發一些前後端分離項目的時候,經常會遇到這類問題,前端開發者會問,我沒有接口怎麼辦?後端開發者會問,我寫的接口要怎麼測試呢?但是還會有這種情況,如果你是一個個人開發者,你既要寫前端,又要寫後端,但是如果你想檢查自己前端的網絡請求後端是否能接收到呢? 等等,小朋友你是否有很多問號?
以下博主我在學習的過程中,遇到過的 搭建 API 的方式,現在整理出來,供大家學習使用
API 服務 (個人理解)
簡答來說,用於一般後端語言 (c++,Python,java)等語言通過網絡編程,或者使用現成的一些 web 框架來搭建一個 web 服務器,這個web 服務器,具有監聽路由的功能,通過對指定路由監聽來自客戶端的請求,接收參數,並處理,然後將處理結果響應給客戶端的過程
一、Python Flask 編寫簡單的 API
說實話 Python Flask 是最簡單的方式搭建一個簡易 API 了,僅需要 5 行代碼就可以搭建一個能跑起來的服務器,但是僅僅能作測試使用,如果要放到生產環境中,我們就得使用更高性能的服務器,比如 Nginx 來反向代理 Flask 的所有請求
1.1 搭建 Python Flask 環境
- 安裝 Python 環境
- 安裝 Flask 框架
在 Python 官網下載 Python 的安裝包:官網鏈接
網上有很多安裝的教程,只有一點要注意,記得加上環境變量即可。安裝好後,在命令控制檯輸入如下內容,能看到 Python 的版本信息,就說明你安裝成功了。
接下里就是通過 Python 自帶的包管理工具 pip ,安裝 Flask 框架:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Flask
,我使用了清華的鏡像源,這樣我們就可以下載很快很快
1.2 編寫你的第一個 Flask 程序
創建一個 app.py 程序,把如下代碼複製粘貼進去
from flask import Flask
# 創建 Flask 實例,在 OOP 中這叫類的實例化
app = Flask(__name__)
# 編寫路由
@app.route("/")
def index(): # 編寫 視圖函數,用戶訪問的根路徑都會給 index 這個視圖函數
return "Hello World"
# 運行實例,並設置端口爲 3000
app.run(port=3000)
然後運行
我們就可以在根頁面看到 Hello World 了
1.3 Flask 進階系列
當你運行了第一個 Flask 程序,那麼恭喜你,你已經會使用 Flask 搭建一個簡易的 Web 應用了。但是作爲前後端交互,一些 get 請求帶參處理,post 請求參數處理, JSON 數據傳輸等等,我們就要學習如下的內容
- Flask 動態路由:看第一部分路由的內容
- HTTP 請求基本原理,http 響應狀態碼,自行百度~
- 自定義響應 make_response
- Flask 的 request 包的參數傳遞
- jsonfiy 基本使用,Flask 提供的 json 數據封裝的 內置函數
- 跨域問題解決
- 遇到問題在網上搜一搜,可能你遇到的問題也有人遇到過,並且已經解決過了
request 參數常見(來自某位大佬的總結,找不到出處了 emmm)
from flask import request
request.method: 獲取請求方法
request.json
request.json.get("json_key"):獲取json數據 **較常用
request.args.get('name') :獲取get請求參數
request.form.get('name') :獲取POST請求參數
request.form.getlist('name_list'):獲取POST請求參數列表(多個)
request.values.get('age') :獲取GET和POST請求攜帶的所有參數(GET/POST通用)
request.cookies.get('name'):獲取cookies信息
request.headers.get('Host'):獲取請求頭相關信息
request.path:獲取用戶訪問的url地址,例如(/,/login/,/ index/);
request.full_path:獲取用戶訪問的完整url地址+參數 例如(/login/?age=18)
request.script_root: 抱歉,暫未理解其含義;
request.url:獲取訪問url地址,例如http://127.0.0.1:5000/?age=18;
request.base_url:獲取訪問url地址,例如 http://127.0.0.1:5000/;
request.url_root
request.host_url
request.host:獲取主機地址
request.files:獲取用戶上傳的文件
跨域問題解決
# 解決跨域問題
@app.after_request
def cors(environ):
environ.headers['Access-Control-Allow-Origin']='*'
environ.headers['Access-Control-Allow-Method']='*'
environ.headers['Access-Control-Allow-Headers']='x-requested-with,content-type'
return environ
二、Java Web 編寫簡單的 API
2.1 搭建環境
前提你是你有 Java 基礎,並且已經學習到了 Java EE 階段
- 安裝 jdk 1.8 版本
- jre 可以選擇性安裝,安裝 JDK 會自動安裝 jre
- 一個合適的開發工具:idea,eclipse web 版本
- maven 工具的基本使用(選)
這些 Java 開發者們應該都會8,我就不解釋了
2.2 搭建一個 Java EE 項目
Java EE 的核心處理流程
- java EE 的核心無非就是 servlet,listener,filter,jsp(就是servlet)
- 在 JavaEE 中,我們在前端使用 ajax,或者 form 表單提交,a 標籤跳轉,js (window.location.href) 、jsp 自帶的 請求轉發,重定向等頁面跳轉方式直接對後端的 Servlet 發送請求。
- 前端發送的請求用 Servlet 進行接收,Servlet 根據請求方式,與 數據庫實現增刪改查的操作,然後聽過 printWriter 以 JSON 字符串 或者 普通字符串 返回給前端,或者請求轉發,重定向等方式,用 servlet 四大域存儲數據,然後返回到前端頁面
先給大家分享幾個我在學習 Java EE 用到的 ajax 技術
原生 ajax 實現 (這個調試花了我好久時間)
原生 ajax + Java EE 實現用戶驗證功能
原生 ajax + Java EE 實現二級菜單聯動
Jquery ajax api實現 (推薦)
Jquery API 實現 ajax + Java EE
近期在學習 前端後端交互的知識,後續會繼續分享 基於 Promise 、 fetch、axios (第三方庫) 等網絡請求的講解
三、Java SpringBoot 編寫簡單的 API
當你經過了 Java EE 階段,就進入到了 Java Spring 全家桶的學習階段,當然你用 SpringBoot 來做更簡單,用 Spring MVC 來做也是完全沒問題的,但是你要寫 前端控制器,web.xml 配置,springmvc.xml 等配置
3.1 搭建一個 SpringBoot 環境
在 idea 中快速構建一個 SpringBoot 項目
這樣我們選擇一個目錄,等到 idea 自動配置好就可以了
3.2 編寫 controller
創建一個 controller 包,目錄必須在 DemoApplication 之下,因爲 SpringBoot 會掃描其子包,如果不這樣做,就會報錯
package com.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // 相當於 springmvc 中的 controller + RequestBody
public class FirstController {
@RequestMapping("/") // 請求路徑爲根路徑
public String index() {
return "Hi, 你好";
}
@RequestMapping("/v1")
public String myPage() {
return "Hello World";
}
}
我們編寫好了兩個方法,然後 SpringBoot 啓動
可以看到字符串正常響應了
四、Node 之 Express 搭建簡易 API
學習雲服務器環境搭建之餘,稍微瞭解過 Node.js 的 web 框架 Express 的基本使用,也很簡單
4.1 你需要安裝 node.js 環境
安裝方式自行百度 ~
下載鏈接
一般下載 .msi 文件,這個比較小,它是一個簡單的下載器,點開它,就會默認在後檯安安靜靜的下載
下載好後查看這兩個命令,一般 node 會自帶 npm,沒有的話自行百度,我的node版本是 8.9.0 是因爲微信小程序要求是這個版本,總之版本不要太低
4.2 搭建你的第一個 Express 應用
- 初始化 npm 環境:
npm init
,會讓你創建一個 index.js 文件 - 安裝 express 環境:
npm install express --no-save
不添加到全局的依賴環境,僅本次安裝有效 - 編寫 index.js 文件
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
- 在命令提示符下,使用
node index.js
就可以看到效果了
注意路徑和端口,別錯就好了