E07750: Web Service return type must be compatible with HTTPResponse
What went wrong
A service method returns a type that isn't compatible with HTTPResponse.
Worked examples
Compilable examples demonstrating this error and the correct fix:
- ek9 -q 890 (Why must service operations return HTTPResponse in EK9?)
How to fix it
- Return HTTPResponse or compatible type
- Wrap data in HTTPResponse constructor
Common causes
- Returning raw data type instead of HTTPResponse
- Missing HTTPResponse wrapper
See also
Examples
Every example is compiled by the EK9 compiler: the first fails exactly as captioned, the others fix it.
Fails with E07750: Web Service return type must be compatible with HTTPResponse
#!ek9 defines module error.e07750.bad defines class TextResponse with trait of HTTPResponse text as String? default private TextResponse() TextResponse() -> body as String this.text: body override contentType() as pure <- rtn as String: "text/plain" override content() <- rtn as Bytes: Bytes().withUtf8(text) override status() as pure <- rtn as Integer: 200 default operator ? defines service Numbers for :/numbers open //A service method answers with an HTTPResponse count() as GET for :/count <- total as Integer: 42
Fixed: Return an HTTPResponse carrying the value
#!ek9 defines module error.e07750.good defines class TextResponse with trait of HTTPResponse text as String? default private TextResponse() TextResponse() -> body as String this.text: body override contentType() as pure <- rtn as String: "text/plain" override content() <- rtn as Bytes: Bytes().withUtf8(text) override status() as pure <- rtn as Integer: 200 default operator ? defines service Numbers for :/numbers open count() as GET for :/count <- response as HTTPResponse: TextResponse($42)
Questions and answers
These Q&A entries show E07750 and its fix: