Fix Dart API generation bugs; Add ability to generate API for path parameters (#2887)
* Fix bug in dartgen: Import path should match the generated api filename * Use Route.HandlerName as generated dart API function name Reasons: - There is bug when using url path name as function name, because it may have invalid characters such as ":" - Switching to HandlerName aligns with other languages such as typescript generation * [DartGen] Add ability to generate api for url path parameters such as /path/:param
This commit is contained in:
@@ -30,19 +30,21 @@ Future {{pathToFuncName .Path}}( {{if ne .Method "get"}}{{with .RequestType}}{{.
|
||||
{{end}}`
|
||||
|
||||
const apiTemplateV2 = `import 'api.dart';
|
||||
import '../data/{{with .Info}}{{getBaseName .Title}}{{end}}.dart';
|
||||
import '../data/{{with .Service}}{{.Name}}{{end}}.dart';
|
||||
{{with .Service}}
|
||||
/// {{.Name}}
|
||||
{{range .Routes}}
|
||||
{{range $i, $Route := .Routes}}
|
||||
/// --{{.Path}}--
|
||||
///
|
||||
/// request: {{with .RequestType}}{{.Name}}{{end}}
|
||||
/// response: {{with .ResponseType}}{{.Name}}{{end}}
|
||||
Future {{pathToFuncName .Path}}( {{if ne .Method "get"}}{{with .RequestType}}{{.Name}} request,{{end}}{{end}}
|
||||
Future {{normalizeHandlerName .Handler}}(
|
||||
{{if hasUrlPathParams $Route}}{{extractPositionalParamsFromPath $Route}},{{end}}
|
||||
{{if ne .Method "get"}}{{with .RequestType}}{{.Name}} request,{{end}}{{end}}
|
||||
{Function({{with .ResponseType}}{{.Name}}{{end}})? ok,
|
||||
Function(String)? fail,
|
||||
Function? eventually}) async {
|
||||
await api{{if eq .Method "get"}}Get{{else}}Post{{end}}('{{.Path}}',{{if ne .Method "get"}}request,{{end}}
|
||||
await api{{if eq .Method "get"}}Get{{else}}Post{{end}}({{makeDartRequestUrlPath $Route}},{{if ne .Method "get"}}request,{{end}}
|
||||
ok: (data) {
|
||||
if (ok != null) ok({{with .ResponseType}}{{.Name}}.fromJson(data){{end}});
|
||||
}, fail: fail, eventually: eventually);
|
||||
|
||||
Reference in New Issue
Block a user