修正
This commit is contained in:
51
check_openapi.py
Normal file
51
check_openapi.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import json
|
||||
|
||||
with open(r'docs/openapi_検証.json', encoding='utf-8') as f:
|
||||
api = json.load(f)
|
||||
|
||||
def resolve_ref(ref):
|
||||
parts = ref.lstrip('#/').split('/')
|
||||
obj = api
|
||||
for p in parts:
|
||||
obj = obj[p]
|
||||
return obj
|
||||
|
||||
def resolve_schema(schema, depth=0):
|
||||
if depth > 3:
|
||||
return schema
|
||||
if '$ref' in schema:
|
||||
return resolve_schema(resolve_ref(schema['$ref']), depth+1)
|
||||
if schema.get('type') == 'array' and 'items' in schema:
|
||||
schema = dict(schema)
|
||||
schema['items'] = resolve_schema(schema['items'], depth+1)
|
||||
if 'properties' in schema:
|
||||
schema = dict(schema)
|
||||
schema['properties'] = {k: resolve_schema(v, depth+1) for k, v in schema['properties'].items()}
|
||||
return schema
|
||||
|
||||
# /post/lists の200レスポンス
|
||||
resp = api['paths']['/post/lists']['get']['responses']['200']
|
||||
schema = resolve_schema(resp['content']['application/json']['schema'])
|
||||
print('=== GET /post/lists Response 200 ===')
|
||||
print(json.dumps(schema, ensure_ascii=False, indent=2)[:3000])
|
||||
|
||||
print()
|
||||
|
||||
# /post/{post_id} の200レスポンス
|
||||
resp2 = api['paths']['/post/{post_id}']['get']['responses']['200']
|
||||
schema2 = resolve_schema(resp2['content']['application/json']['schema'])
|
||||
print('=== GET /post/{post_id} Response 200 ===')
|
||||
print(json.dumps(schema2, ensure_ascii=False, indent=2)[:4000])
|
||||
|
||||
print()
|
||||
|
||||
# serversの確認
|
||||
print('=== Servers ===')
|
||||
print(json.dumps(api.get('servers', []), ensure_ascii=False, indent=2))
|
||||
|
||||
# componentsのparametersでよく使うものを確認
|
||||
print()
|
||||
print('=== Key Parameters ===')
|
||||
for key in ['Authorization', 'date_from', 'date_to', 'limit_50', 'offset']:
|
||||
param = api['components']['parameters'].get(key, {})
|
||||
print(f'{key}: in={param.get("in")}, name={param.get("name")}, schema={param.get("schema")}')
|
||||
Reference in New Issue
Block a user