Comments (4)
On a semi-related note: be aware that in RAML, examples do not have to be defined in the same syntax as the media type(s) of the parent resource.
There are two reasons for this:
- Content negotiation: some APIs and their underlying resources may support content type negotiation which means that a given payload in the API definition may be defined in YAML or JSON but the actual payload that people would end-up seeing/getting over the network could be in a different media type. One way to achieve this could be to use the RAML default media type feature.
- Also, what an API definition primarily describes is the semantic, not the syntax (although it can enforce a particular syntax). Examples in RAML are defining the semantic (it's an object, it has properties, those properties may have certain values) and that can be represented in any supported format.
from raml-java-parser.
The way I can do this is attempt to actually parse the example as either XML or JSON and upon failing that, not treat it as a XML or JSON document.
This makes invalid JSON examples error messages more obscure:
/hello:
get:
post:
responses:
202:
body:
application/json:
type: object
properties:
key:
type: object
properties:
x: string
example: |
{
x: "lala"
}
used to say: "Error validating JSON. Error: Unexpected character ('x' (code 120)): was expecting double-quote to start field name"
But now says: "Invalid type String, expected Object for example", as it will now not be parsed as json, it will be treated as a string.
Honestly, I don't think it's worth the change. I'll try to find a better solution, but there's not many variations.
from raml-java-parser.
The issue comes from the fact that there is "pre-processing" validation happening when an example defined on ANY type starts with either <
(XML), or {
, [
(JSON). That validation should only happen when the type or one of the subtypes (union
) is object
.
@juanchib: make sense?
from raml-java-parser.
@jstoiko yes it makes total sense to me. Thanks
from raml-java-parser.
Related Issues (20)
- date-only & datetime-only allow one digit months and days HOT 4
- datetime-only validation HOT 1
- ContextPath is not working on windows ending in invalid paths. HOT 1
- org.raml.v2.internal.impl.commons.nodes.StringTemplateNode cannot be cast to org.raml.yagi.framework.nodes.ReferenceNode HOT 2
- Type is not inferred from property `items`
- Type is not inferred from property `fileTypes`
- [POSSIBLE BUG] [SUPPORT NEEDED] Builder not found for `uses` HOT 2
- Migration guide to webapi-parser HOT 1
- Cannot validate example against XML Schema v1.1 HOT 3
- Strings "true" and "false" are valid for boolean type HOT 2
- Interger as name of `Type` produces a `ClassCastException` during parsing HOT 1
- RunTimeException error HOT 1
- t
- Issue getting query parameters from resourceType HOT 1
- Need property to prevent backward compatibility issues for #590 fix
- Forcing elements order in XML example file
- Issue with union types and JSON-formatted examples
- Vulnerable version snakeyaml HOT 1
- CacheResourceLoader leaking FileInputStream
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from raml-java-parser.