Comments (2)
Hi,
This is a huge bug on validation, we will fix it.
Thank you.
from flask-jsonrpc.
Hi,
One detail, the return of method can't be known before the evaluation. The code bellow will work on validate, but will break on execution:
@jsonrpc.method('add(a=int, b=int)')
def add(a: int, b: int):
...
return 0
The test:
def test_app_create_with_method_without_annotation_on_return():
app = Flask(__name__, instance_relative_config=True)
jsonrpc = JSONRPC(app, '/api', enable_web_browsable_api=True)
# pylint: disable=W0612
@jsonrpc.method('app.fn1')
def fn1(s: str):
return 'Foo {0}'.format(s)
# pylint: disable=W0612
@jsonrpc.method('app.fn2')
def fn2(s: str) -> str:
return 'Bar {0}'.format(s)
with app.test_client() as client:
rv = client.post('/api', json={'id': 1, 'jsonrpc': '2.0', 'method': 'app.fn1', 'params': [':)']})
assert rv.json == {
'error': {
'code': -32602,
'data': {
'message': 'return type of str must be a type; got NoneType instead'
},
'message': 'Invalid params',
'name': 'InvalidParamsError',
},
'id': 1,
'jsonrpc': '2.0',
}
assert rv.status_code == 400
rv = client.post('/api', json={'id': 1, 'jsonrpc': '2.0', 'method': 'app.fn2', 'params': [':)']})
assert rv.json == {'id': 1, 'jsonrpc': '2.0', 'result': 'Bar :)'}
assert rv.status_code == 200
Thank you.
from flask-jsonrpc.
Related Issues (20)
- App.wellcome() is visible in Dashboard but unaccessible? HOT 2
- Directories in API browser HOT 8
- Feature reqest: do not allow to invoke method as JSON-RPC "Notification" HOT 2
- API browser does not work with flask-jwt HOT 4
- API browser does not support more complex type anotations
- Default values for parameters in API Browser HOT 3
- Feature request: package description and package documentation page
- Feature request: Markdown/HTML support for descriptions HOT 2
- Allow to use custom error codes for unexpected errors HOT 1
- Feature request: use Annotated type hint for per-field documentation HOT 2
- Feature request: allow deeper view nesting in API Browser HOT 2
- Feature request: function (view) overloading? HOT 6
- The API Browser doesn't support method without types hints
- Unified API Browser in case of using modular server
- Add support to Python 3.11
- Goodbye Python 3.6
- JSON Schema Service Descriptor
- Can not import in windows HOT 1
- remove support for 3.7 and 3.8 and add 3.12 HOT 7
- New major library version HOT 4
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 flask-jsonrpc.