前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-fastAPI-字段验证

Python-fastAPI-字段验证

原创
作者头像
如此这般那便是极好
发布2023-12-20 17:24:50
1820
发布2023-12-20 17:24:50
举报
文章被收录于专栏:未来码迹未来码迹

在创建API的过程中,通常API接口是没有做任何验证的,这样就有可能出现可能的安全问题,不是什么特别重要的接口,故使用字段验证

注意:这种方式只是对于不重要的接口做验证,如果比较重要,建议使用oAuth2.0认证完整流程

代码如下:

代码语言:python
复制
import time
from typing import Union
from fastapi import FastAPI, Depends, HTTPException, Header
from zoho_select import zohoselect
from pydantic import BaseModel
from didamian import *
from crmsql import *
from Universal import *
from emailsend import Email
d = di()
z = zohoselect()
app = FastAPI()
class Item(BaseModel):
    iid: str
    area: str
    name: str
    source: str
    owner: str
    column:str
    desc:str
class Event(BaseModel):
    Eventid :str
    Eventtitle :str
    Eventcount :str
    whatid : str
    over :str

class Project_Management(BaseModel):
    iid :str
    title :str
    dep :str
    Owner :str
    st :str
def authenticate(token: str = Header(...)):
    # 检查传递的 token 是否符合预期的值
    if token != "66467345678999876456746":
        raise HTTPException(status_code=401,detail=None)

@app.get("/test")
def read_root(token: str = Depends(authenticate)):
    return {"Hello": "World"}

我们在authenticate方法中定义一个token字段,指明在Header里面,并在get方法路径中指明需要这个必填字段,故发送过来的请求必须有taoken字段,且值必须正确。在authenticate方法中自行定义token的值

代码语言:Python
复制
if token != "66467345678999876456746":

post或者其他方法一样,如法炮制就行,

请求正常返回:

代码语言:json
复制
{
	"Hello": "World"
}

请求字段值错误返回:

代码语言:json
复制
{
	"detail": "Unauthorized"
}

请求头中未包含必填字段返回:

代码语言:json
复制
{
	"detail": [
		{
			"type": "missing",
			"loc": [
				"header",
				"token"
			],
			"msg": "Field required",
			"input": null,
			"url": "https://errors.pydantic.dev/2.2/v/missing"
		}
	]
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档