Falcon学习笔记2——修改响应状态
admin
2023-06-29 06:23:25
0

本节尝试从client发送json到服务器,然后服务器根据内容响应

1.测试客户端发送与接收输出
import json,falcon

class ObjRequestClass:
    def on_get(self,req,resp):
        resp.status = falcon.HTTP_200
        data = json.loads(req.stream.read())
        content = {
            'name':'falcon',
            'age':30
        }
        resp.body=json.dumps(data)

api = falcon.API()
api.add_route('/test',ObjRequestClass())

req.stream.read() #读取客户端请求内容

发送测试请求,我用httpie,喜欢用postman的在Body,raw中添加即可。

http get localhost:8080/test name="hello"

注意发送时用双引号,不要用单引号。单引号会报错。

一切正常能看到如下输出:

HTTP/1.1 200 OK
Content-Length: 17
Content-Type: application/json
Date: Fri, 08 Nov 2019 03:39:59 GMT
Server: waitress

{
    "name": "hello"
}
2.尝试根据发送内容获取不同结果
{
"method":"get-name"
}
import json,falcon

class ObjRequestClass:
    def on_get(self,req,resp):
        resp.status = falcon.HTTP_200
        data = json.loads(req.stream.read())
        content = {
            'name':'falcon',
            'age':30
        }
        value={}
        if data["method"]=="get-name":
            value['value']=content['name']
        else:
            value['value']=None
        resp.body=json.dumps(value)

api = falcon.API()
api.add_route('/test',ObjRequestClass())

httpie测试

http get localhost:8080/test falcon_test:api method="get-name"  #结果正常
http get localhost:8080/test falcon_test:api method="get-names" #结果为null
3.添加不同http状态
import json,falcon

class ObjRequestClass:
    def on_get(self,req,resp):
        resp.status = falcon.HTTP_200
        data = json.loads(req.stream.read())
        content = {
            'name': 'falcon',
            'age': 30
        }
        value = {}
        if "method" not in data: #检测内容是否包含请求信息
            resp.status == falcon.HTTP_501 
        else:
            if data["method"] == "get-name":
                value['value'] = content['name']
            elif data["method"] == "get-age":
                value['age'] = content['age']
            else:
                resp.status = falcon.HTTP_404
                value['value'] = None

        resp.body = json.dumps(value)

api = falcon.API()
api.add_route('/test',ObjRequestClass())

req.stream 可用

['__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__
enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__nex
t__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', 'close', 'c
losed', 'detach', 'fileno', 'flush', 'getbuffer', 'getvalue', 'isatty', 'read', 'read1', 'readable', 'readinto', 'readinto1', 'readline', 'readlines', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'wr
ite', 'writelines']

相关内容

热门资讯

演唱会大量邀请票被当众焚毁,警... 极目新闻记者 杜光然5月29日,网友发帖称,有人当众焚烧大量演唱会邀请票,视频定位于温岭市体育中心。...
多所高校撤销外语学院 人工智能的发展及其他因素的影响下,外语类专业面临挑战,近年来一些高校对外语学院进行调整、重组。近日,...
解放军少将质问日方:有没有资格... 【环球时报-环球网报道 记者 郭媛丹 苏雅瑄】 “殷鉴不远,今天的世界又处在新的十字路口,我们必须警...
《给阿嬷的情书》导演被网友二创... 《给阿嬷的情书》这段解读直接破防!网友二创还原木生守桥的画面,把邮差落水,弄丢写有真相的讣告信件,解...
伊朗最高领袖顾问批特朗普背弃外... 据凤凰卫视报道,美伊谈判前景不明,伊朗最高领袖顾问雷扎伊5月30日指责美国总统特朗普第三次背弃外交原...
免去南开大学陈某院长、中山大学... 刚刚,南开大学和中山大学发布情况通报。南开大学:免去陈某院长职务南开大学通报中指出,论文第一作者郑某...
绿色算力全栈AI平台在呼和浩特...   新华社呼和浩特5月30日电(记者侯维轶)30日,绿色算力全栈AI平台——内蒙古词元交易平台在内蒙...
北京太空智算研究院在北京亦庄成... 红星资本局5月30日消息,近日,北京太空智算研究院在北京经济技术开发区(简称“北京经开区”,又称“北...
第二届西部医学科技创新学术大会... 封面新闻记者 邱添 2026年5月30日,在第十个全国科技工作者日来临之际,一场汇聚医学前沿智慧与创...
地博光电取得存储自动化料库专利... 国家知识产权局信息显示,昆山地博光电材料有限公司取得一项名为“一种存储自动化料库”的专利,授权公告号...