RAML基本语法

RAML to Java解析器项目详解 本文还有配套的精品资源,点击获取 简介:RAML是一种用于定义RESTful API的建模语言,它使用YAML格式使API设计标准化并提升开发效率。 raml-java-parser-master 是一个开源项目,将RAML文件解析成Java对象以在Java环境中操作API定义。该工具具备RAML解析、代码生成、API验证、文档生成和高度灵活性等特点。开发者可... 阅读详情

人类可读的raml语法

开始设计时,首先创建一个包含以下内容的RAML文件:

#%RAML 0.8
title: This is My API
baseUri: http://api.domain.com
version: 1

在以上代码中,我们首先声明这是一个RAML规范,它对应RAML 0.8,并声明API的标题、基本URI、以及这个API的版本号。
在RAML中声明资源非常简单,只需使用/resourceName格式。而添加方法也同样便捷,只需引用相应的HTTP谓词即可:

#%RAML 0.8
title: This is My API
baseUri: http://api.domain.com
version: 1

/resource1:
  get:
    description: This gets the collection of resource1
  post:
    description: This adds a new item to the collection

RAML让你能够定义多种相应,返回不同的状态码、头信息以及响应体。例如:

#%RAML 0.8
title: This is My API
baseUri: http://api.domain.com
version: 1

/resource1:
  get:
    responses:
      200:
        headers:
          cache-control:
            example: |
              public, no-cache, no-store

        body:
          application/json:
            example: |
              {"name":"Michael Stowe"}
          application/xml:
            example: |
              <name>Michael Stowe</name>
      400:
        #...
      401:
        #...

RAML本身还有大量的其它特性,让你通过schema与参数定义完整的API。它还允许你使用资源嵌套、文件引用(可以引用多个文件,以保持规范的易读性和易组织性),甚至是变量或属性的设置,从而在整个规范中保持一致性。

举例来说,你可以在规范中按以下方式利用这些特性:

#%RAML 0.8
title: This is My API
baseUri: http://api.domain.com
version: 1

/resource1:
  get:
    responses:
      200:
        body:
          application/json:
            schema: |
              {
                  "type": "object",
                  "$schema": "http://json-schema.org/draft-03/schema",
                  "id": "http://jsonschema.net",
                  "required": true,
                  "properties": {
                    "firstName": {
                      "type": "string",
                      "required": true
                    },
                    "lastName": {
                      "type": "string",
                      "required": true,
                      "minLength": 3,
                      "maxLength": 36
                    }
                  }
              }

  /sub-resource:
    get:
      queryParameters:
        firstName:
          description: "the user’s first name"
          example: John
          required: true
          type: string

对开发者十分友好

RAML的优点不仅在于简单的格式与丰富的工具,它还能够让开发者应用编码的最佳实践,例如模式与重用代码。这不仅能够极大地减少开发者的工作,还能够促使API在不同的资源与方法中保持统一性。虽然你总是能够抽象出一套schema,以保持规范的良好组织,或是通过“!include”命令引入schema、示例与其它RAML代码片段,但RAML还提供了两个额外的实用与独特的模板特性:即traits与resourceTypes

通过traits定义通用属性

RAML的traits特性允许你为方法(GET、PUT、POST、PATCH、DELETE等等)定义通用的属性(或traits),例如它们是否可过滤、可搜索或是可分页。

在创建trait时,你实际上是创建了一份模板,它能够通过接受参数为方法提供属性,只需几行代码就能够完成。同时为你所需的trait提供了最大程度的灵活性与自定义能力:

traits:
-searchable:
  queryParameters:
  query:
  description: |
    JSON array [{"field1","value1","operator1"},…] <<description>
  example: |
    <<example>>

/people:
  get:
    is: [searchable: {description: "search by name", example: "[\"firstName\"\,\"Michael\",\"like\"]"}]  

通过ResourceTypes为资源定义模板

此外,与traits相似,resourceTypes也允许你为资源本身创建模板,以此调用通用的方法与响应。打个比方,对于Collection这种资源类型来说,你可能会大量用到POST与GET方法,并且通常会返回200、201或400等状态码。只要将它定义为一种resourceType,你就能够通过两行代码就完成调用,而无需为你所创建的每种资源都加入相同的方法与状态码。

resourceTypes:
- collection:
    description: Collection of available <<resourcePathName>>
    get:
      description: Get a list of <<resourcePathName>>.
      responses:
        200:
          body:
            application/json:
              example: |
                <<responseVariable>>
        400:
          #...
        401:
          #...

/people:
  type:
    collection:
      responseVariable: |
        {
         "name" : "Michael Stowe",
         "company" : "MuleSoft",
        }

你甚至可以在resourceTypes中定义可选的方法,只需为该方法加上一个问号(?)即可。这种可选方法只有在定义了该方法的资源中才会被引入,这就为你赋予了更大的灵活性。

注:这里只介绍了一些基本用法,详细用法请参考官方语法介绍

API设计:RAML语言的深度剖析 本文深入解析了RAML(RESTful API Modeling Language)语言在API设计中的应用。通过一个书籍API组合的具体案例,展示了RAML如何定义API资源、响应、参数以及安全方案,突出了RAML在构建API组合时的可重用性和清晰的层次结构。文章还介绍了外部可重用元素的包含方法,以及如何使用RAML进行API安全性的描述。 阅读详情

相关推荐

raml-workflow:我的 RAML API 文档工作流程

raml-工作流 基本 RAML 工作流,将使用 RAML2HTML 和 browserSync 在更改时刷新 API 文档。 花了一些时间在网络上运行以获得良好的 RAML 工作流程。 希望这有助于节省一些时间。 安装 安装: raml2md globaly: npm i -g raml2md 运行: npm install 将您的 RAML 文件创建为 api/api.raml 或符号链接您当前的 raml 文件夹(如果存储在另一个存储库中)。 MD 和 HTML 的输出将在 /output 中。 任务 降价转换: 运行: npm run build HTML 转换: 运行: gulp apidoc 带实时重载的 HTML 转换: 运行: gulp serve 带有花式输出的 Linting: 运行: gulp rlint 依赖项/外部脚本: RAML 到 HT

RAML规范1.0(译文)

RAML: RESTful API Modeling Language即RESTful API建模语言,是对RESTful API的一种简单直接的描述。它是一种让人们易于阅读且能让机器对特定文档可以解析的语言。RAML是基于YAML,符合1.2版本规范。通过RAML定义,因为机器可以解析,所以RAML规范提供了一些机制,可以定义实际的RESTful API,创建client / server源代码,以及为用户生成API文档。..............................

Lucifer ZHAO 1533

三级等保网络拓扑图实战:从零搭建符合标准的医院安全架构

本文详细阐述了如何从零开始设计并搭建符合三级等保标准的医院网络安全架构。文章基于“一个中心,三重防护”的核心框架,深入解析了医院网络分区设计、安全域划分、关键安全设备选型与配置等实战要点,并提供了绘制专业网络拓扑图的技巧与等保测评准备指南,旨在帮助医院IT人员系统化地构建既合规又实用的纵深防御体系。

weixin_29326909的博客 503

RAML概述

RAML(RESTful API Modeling Language)是一个采用YAML格式定义的API建模语言。 2017.6发布最新版本1.0 RAML在Github上有一组项目,组成如下: raml-spec RAML规范 raml-examples RAML特性示例,RAML规范的组成部分 raml-definition-system RAML 1.0定

成长的足迹 5190

Ubuntu 20.04 系统备份和还原

最近大家Ubuntu开发环境,经常出现搭着搭着系统就挂了,于是开始琢磨了Ubuntu系统的备份和还原,以备不时之需,Linux环境搭建实在是有点太细,好多情况下,就算曾经搭建过一遍,再次搭建有些包还是忘了安装,做好备份是十分必要的。 经过了一番研究,Ubuntu备份有很多方式:根目录tar、dd、Systemback(1.0版本已经不维护了,2.0版本收费)等等,最终决定使用 —— Timesift, 因为方便一些。 文章参考:小马虎的救星——Timeshift Timeshift Timeshift,是L

Z_Paper的博客 2万+

ANSYS二次开发:Python和ANSYS进行交互操作(PyAnsys库,DPF)

🎈ANSYS二次开发:APDL开发入门准备🎈- 🎈ANSYS二次开发:后处理使用APDL命令流解析结果文件🎈 🎈ANSYS二次开发:Python解析ANSYS结果文件(PyAnsys库)🎈 🎈ANSYS二次开发:Python操作ANSYS(PyAnsys库,PyDPF)🎈 文章目录1、简介2、安装2.1 ansys-mapdl-core2.2 pyaedt2.3 ansys-dpf-core2.4 ansys-dpf-post2.5 ansys-mapdl-reader2.6 G...

爱看书的小沐 2万+

RAML学习

RAML(RESTful API Modeling Language)是一种基于 YAML 的语言,用于定义 RESTful API。它的主要目的是在编写代码之前定义 API 的结构和行为,从而简化设计、开发和维护 API 的过程。通过 RAML,开发者和设计师可以明确 API 的各个方面,包括资源、方法、请求和响应格式。RAML 是一种基于 YAML 的 API 设计语言,可以帮助团队在开发 API 前就明确其结构和行为。

pumpkin84514的博客 1188

R语言下载包报错?可能是IE浏览器在搞鬼!手把手教你修复(附CRAN镜像选择指南)

本文深入解析了R语言下载包时常见的网络报错问题,特别是Windows系统中因Internet Explorer代理设置导致的连接失败。文章提供了从重置IE配置、排查防火墙到优化CRAN镜像选择的完整解决方案,并附有详细的配置指南和自动化诊断脚本,帮助用户彻底解决R包安装难题。

weixin_29056781的博客 741

基于RAML的API接口文档管理

基于RAML的API接口文档管理 文章目录基于RAML的API接口文档管理什么是RAML怎么使用RAML设计构建&测试(mock server)文档扩展一个例子RAML文件文档 什么是RAML RAML(RESTful API Modeling Language),是一种建模语言,RAML定义好API的输入输出等属性后,可以使用不同的工具或方法生成API文档、构建mock server等,...

CL有毒 3561

从点击图标到Activity亮屏:AMS、Zygote、ActivityThread的Binder协作之旅

Launcher通过Context调用 startActivity(),最终会通过 Activity.startActivity() 传递到 ActivityManager.getService(),获取AMS的Binder代理对象(IActivityManager)。这里的 attach() 方法通过Binder调用AMS的 attachApplication(),将新进程的 IApplicationThread 代理对象传递给AMS。这一步的Binder通信,是整个启动流程的关键转折点,值得细细品味。

大模型大数据攻城狮的专栏 1071

OD图 arcgis曲线制作插件 od图曲线 路径图曲线制作插件 航线图曲线制作插件

在ArcGIS 10.2 中导入节点数据,打开插件,选择输入起始节点和目标节点的节点文件Point,以Name字段(地名)为连接线的起始字段和目标字段,(Input Table File)选择连接关系表格SDLine.csv,(Origin Column 和 Destination Column)为起始节点和目标节点,(Output Path)为输出路径,应选择.gdb数据库路径,否则容易报错,(Chord Coefficient)为连线的曲率,数值越大,曲率越高。运行环境:ArcGIS10.2。...

JData_Engineer的博客 2669

raml_RAML,RESTful API建模语言

ramlIn a recent article I introduced Slate, a static site generator specifically designed for writing API documentation. This time around, I’m going to look at something which in many ways is even bet...

culh2177的博客 696

英伟达 Jetson AGX Thor 官方入门教程(二)CUDA、Docker、JetPack 设置

本文详细介绍了NVIDIA Jetson AGX Thor开发套件的安装与配置流程。主要内容包括:1) BSP安装的三种方法(Jetson ISO、SDK Manager和Linux刷写脚本)及其适用场景;2) Docker环境的完整配置步骤及测试方法;3) CUDA工具包的两种安装方式(容器化和原生安装)及其性能对比;4) JetPack SDK的安装选项。文章提供了详细的命令行操作指南和故障排除建议,帮助开发者快速搭建AI开发环境,充分发挥Jetson平台的硬件性能优势。

机器人控制与仿真应用 1731

使用RAML描述API文档信息的一些用法整理

  RAML是Restful API Modeling Language的缩写,是用来描述API信息的文档。   创建一个.raml后缀的文件,用Atom打开。   基本用法   #%RAML 0.8 title: Book API baseUri: http://api.book.com/{version} version: v1 /users: ...

weixin_33716941的博客 877

使用Simulink对固定翼无人机的自动起飞与降落进行仿真

本文介绍了基于Simulink的固定翼无人机自动起飞与降落控制系统设计方法。系统包含飞行器动力学模型、控制系统、环境模拟等模块,通过简化动力学方程描述无人机运动特性。详细说明了从创建模型、设置动力学方程、设计PID控制器(包括自动起飞和降落控制策略)到添加环境模拟的完整仿真流程。重点阐述了升降舵和发动机推力的控制律设计,以及性能评估要点。本方法可有效验证控制系统设计,优化飞行稳定性和安全性参数,为无人机自主控制提供仿真支持。

amy_mhd的博客 223

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

raml2html 安装,Raml实践

Raml实践简介:RAML的全称是RESTful API Modeling Language,这是一种用来描述基于Restful架构的API(设计API)的语言。它的语法规范是基于YAML的新规范,因此机器与人类都能够轻易地理解其中的内容。一、工具安装一、API Workbench(客户端工具-推荐)介绍:API Workbench是一个丰富的全功能集成开发环境(IDE),用于设计,构建,测试,记...

weixin_36308872的博客 417

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RAML简介

RAML是什么 Write once. Use many. Creative laziness encouraged RESTful API Modeling Language (RAML) makes it easy to manage the whole API lifecycle from design to sharing. It’s concise - you only writ

Walter`s blog 1788

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

RAML文档生成器raml2html详解

raml2html是一款从RAML到HTML的文档生成器,JavaScript语言编写。 raml2html默认支持Node.js,支持默认或定制theme。 1. 版本 raml2html 3.x支持RAML 0.8 raml2html 4支持RAML 1.0 2. 安装 npm i -g raml2html 安装Markdown主题 npm i -g raml2ht

成长的足迹 4676

RAML的学习之路(一)

RAML是什么呢?下面这段话摘自于网络 RAML的全称是RESTful API建模语言,这是一种基于YAML格式的新规范,因此机器与人类都能够轻易地理解其中的内容。但RAML的目的不仅仅在于创建更易于理解的规范(你可以将这一工作指派给文档团队,他们会做得更好)而已。RAML的设计者Uri Sarid希望使用者能够打破固有的思维,在开始编写代码之前以一种全新的方式对API进行建模。 它的官网是:

vduoluo的博客 6488

raml php,RAML 学习笔记

RAML 学习笔记RAML,Swagger和API Blueprint区别Swagger 优势在于对从现有的程序中自动生成接口,无需完全手写文档;RAML 的优势是文档编写清晰方便,适合于没有现成接口,而需要全新规划;Blueprint 的优点是 markdown 语法。因为目前手头的接口也是从 0 开始,也需要系统性的规划一下,因此选择 RAML 兼顾编写和规划编辑器选择VS code RAM...

weixin_26833139的博客 136

基于SpringMVC的RAML插件项目常见问题解决方案

基于SpringMVC的RAML插件项目常见问题解决方案 1. 项目基础介绍和主要编程语言 springmvc-raml-plugin 是一个开源项目,旨在为基于SpringMVC的Java应用提供RAML(RESTful API Modeling Language)支持。RAML是一种用于描述RESTful API的YAML格式语言,通过此插件,开发者可以将RAML规范直接集成到SpringMV...

gitblog_00042的博客 915

raml php,RAML的学习之路(一)

RAML是什么呢?下面这段话摘自于网络RAML的全称是RESTful API建模语言,这是一种基于YAML格式的新规范,因此机器与人类都能够轻易地理解其中的内容。但RAML的目的不仅仅在于创建更易于理解的规范(你可以将这一工作指派给文档团队,他们会做得更好)而已。RAML的设计者Uri Sarid希望使用者能够打破固有的思维,在开始编写代码之前以一种全新的方式对API进行建模。它的官网是:虽然目前...

weixin_42433737的博客 256

RAML

RAMLRAML - (RESTful API Modeling Language 即RESTful API建模语言) 易于阅读API 易于设计API 易于共享API 语法简洁明了 关注需要定义的信息即可 机器可解析并生成html文档 开发工具 API Designer API Console` API Notebook` 摘要 RAML 是一种基于HTTP-API的定义语言. 体现了所有对

夜深丶人静 - 软件开发之路 2984

RAML介绍

RAML是什么Write once. Use many. Creative laziness encouragedRESTful API Modeling Language (RAML) makes it easy to manage the whole API lifecycle from design to sharing. It’s concise - you only write what

技术研发部官方博客 1690

针对raml的一些使用技巧和raml-jaxrs-maven-plugin插件的使用注意

raml-jaxrs-maven-plugin是一种将raml文件转换为java代码的maven插件该插件有以下几点注意事项: 目前为止并不支持 raml 1.0 的解析 不支持Examples,JSON schema的生成,这里的不支持schema生成指的是生成request代码中,并不会同样生成返回的schema的代码,但是会在model目录下生成schema实体 不支持外部Trait 和 Re

Walter`s blog 1218
上一篇: RAML简介
下一篇: raml-for-jax-rs插件
原力架构
博客等级 码龄10年 21粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值