Dynamic enum with FastApi

Sometimes you need dynamic enumerations, such as some selector options from  database, but you will find that it seems like an the enumeration can only be modified at app startup. Try this:

1
2
3
4
5
6
7
8
9
10
11
myuan@jxtkfuwuqi ~> curl 10.242.155.222:8000
{"detail":[{"loc":["query","e"],"msg":"field required","type":"value_error.missing"}]}⏎
myuan@jxtkfuwuqi ~> curl 10.242.155.222:8000/rand-enum
{"message":{"0-7":"value-85","1-8":"value-6","2-5":"value-10","3-5":"value-99","4-4":"value-14"}}⏎
myuan@jxtkfuwuqi ~> curl '10.242.155.222:8000?e=value-10'
{"e":"value-10"}⏎
myuan@jxtkfuwuqi ~> curl '10.242.155.222:8000?e=value-9'
{"detail":[{"loc":["query","e"],"msg":"value is not a valid enumeration member; permitted: 'value-85', 'value-6', 'value-10', 'value-99', 'value-14'","type":"type_error.enum","ctx":{"enum_values":["value-85","value-6","value-10","value-99","value-14"]}}]}⏎
myuan@jxtkfuwuqi ~> curl '10.242.155.222:8000?e=value-11'
{"detail":[{"loc":["query","e"],"msg":"value is not a valid enumeration member; permitted: 'value-85', 'value-6', 'value-10', 'value-99', 'value-14'","type":"type_error.enum","ctx":{"enum_values":["value-85","value-6","value-10","value-99","value-14"]}}]}⏎

Enumeration constraints are still in effect while the enumeration is modified

作者

myuan

发布于

2022-07-23

更新于

2024-06-04

许可协议

评论