Trait trong RAML được sử dụng để định nghĩa những thành phần giống nhau trong các request URI khác nhau để có thể sử dụng lại được. Nó giống như common class, method trong Java đó các bạn!
Ví dụ như mình có 2 request URI có định nghĩa như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#%RAML 1.0 baseUri: https://localhost:8081/api title: RAML Trait version: 1.0 /students/by-name: get: queryParameters: name: string /classes/by-name: get: queryParameters: name: string |
Trong 2 request này, request parameter “name” được định nghĩa giống nhau. Do đó, chúng ta có thể sử dụng Trait để định nghĩa cho request parameter này và sử dụng lại trong 2 request. Khi thay đổi định nghĩa cho request parameter “name”, chúng ta không cần phải sửa nhiều chỗ nữa.
Chúng ta định nghĩa Trait cho request parameter “name” với tên gọi là “hasNameParam” như sau:
1 2 3 4 |
traits: hasNameParam: queryParameters: name: string |
Và để sử dụng nó trong các request URI, các bạn cần khai báo nó với từ khoá “is” như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#%RAML 1.0 baseUri: https://localhost:8081/api title: RAML Trait version: 1.0 traits: hasNameParam: queryParameters: name: string /students/by-name: get: is: [ hasNameParam ] /classes/by-name: get: is: [ hasNameParam ] |
Import API specs này vào Postman, các bạn sẽ thấy kết quả như sau: