aspida / resthub

0 stars 4 forks source link

feat(components):add responses #28

Closed maccostar closed 4 years ago

maccostar commented 4 years ago

Types of changes

What kind of change does this PR introduce? (check at least one)

Description

Issue Number: N/A

Style(components):change style

client/components/ApiMethod.vue

Feat(components):Add Response

client/components/ApiMethod.vue

client/components/ApiResponse.vue

Sample Response Object

{ "description": "A complex object array response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VeryComplexType" } } } } }

- selectedMediaType
- 43行目~52行目`selectedSchemaObj`は`<v-select></v-select>`内で選択を変更した際に、13行目に選択したMediaTypeのMediaTypeObject.schemaを渡すために作成。

#### client/components/SchemaObj.vue

- [SchemaObject](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schema-object)を表示させるためのvue。
- SchemaObject内のpropertiesとitemsは、更にその下にSchemaObjectを持つため、componentを再帰的に参照する。
- sample1~4のパターンでデータを持つため、`objectsToShow`でpropertiesを取得するか、items.propertiesを取得するかを判断している。

sample1 typeがない

{ "required": [ "code", "message", ], "properties": { "code": { "type": "string", "example": "" }, "message": { "type": "string" } } }

sample2 type:array

{ "type": "array", "items": { "required": [ "id", "name", "role" ], "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "role": { "type": "string" } } }

sample3 type:object

{ "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string" } } }

sample4 allOf/oneOf/anyOf

{ "allOf": [ { "required": [ "id", "username", "email" ], "properties": { "id": { "type": "number", "example": 777 }, "username": { "type": "string", "example": "Demo User" }, "email": { "type": "string", "example": "demo@tchop.io" } } }, { "type": "object", "required": [ "token" ], "properties": { "settings": { "required": [ "isAppLocked" ], "properties": { "isAppLocked": { "type": "boolean" } ] } } } } }



### Feat(Pages):Add refPath Data
#### client/pages/apiService.vue
`replacedApiDoc`で`"$ref"`は完全に置換してしまっていたが、参照先のモデル名を表示させる必要があるため、`"refPath"`としてプロパティを追加。