mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-01-23 09:00:20 +08:00
goctl生成Kotlin代码优化 (#16)
* 修复Kotlin连接失败抛出Exception;添加Kotlin连接超时 * 修复路径参数导致生成的Kotlin函数名带有:问题 * Added HTTP Patch Method * kotlin-add-patch-support * format-imports
This commit is contained in:
parent
054d9b5540
commit
1252bd9cde
@ -43,6 +43,7 @@ var mapping = map[string]string{
|
||||
"head": "http.MethodHead",
|
||||
"post": "http.MethodPost",
|
||||
"put": "http.MethodPut",
|
||||
"patch": "http.MethodPatch",
|
||||
}
|
||||
|
||||
type (
|
||||
|
@ -5,12 +5,13 @@ import (
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/iancoleman/strcase"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/api/util"
|
||||
)
|
||||
|
||||
var funcsMap = template.FuncMap{
|
||||
"lowCamelCase": lowCamelCase,
|
||||
"pathToFuncName": pathToFuncName,
|
||||
"routeToFuncName": routeToFuncName,
|
||||
"parseType": parseType,
|
||||
"add": add,
|
||||
"upperCase": upperCase,
|
||||
@ -24,16 +25,16 @@ func lowCamelCase(s string) string {
|
||||
return util.ToLower(s[:1]) + s[1:]
|
||||
}
|
||||
|
||||
func pathToFuncName(path string) string {
|
||||
func routeToFuncName(method, path string) string {
|
||||
if !strings.HasPrefix(path, "/") {
|
||||
path = "/" + path
|
||||
}
|
||||
|
||||
path = strings.ReplaceAll(path, "/", "_")
|
||||
path = strings.ReplaceAll(path, "-", "_")
|
||||
path = strings.ReplaceAll(path, ":", "With_")
|
||||
|
||||
camel := util.ToCamelCase(path)
|
||||
return util.ToLower(camel[:1]) + camel[1:]
|
||||
return strings.ToLower(method)+strcase.ToCamel(path)
|
||||
}
|
||||
|
||||
func parseType(t string) string {
|
||||
|
@ -34,9 +34,10 @@ suspend fun apiRequest(
|
||||
) = withContext(Dispatchers.IO) {
|
||||
val url = URL(SERVER + uri)
|
||||
with(url.openConnection() as HttpURLConnection) {
|
||||
connectTimeout = 3000
|
||||
requestMethod = method
|
||||
doInput = true
|
||||
if (method == "POST" || method == "PUT") {
|
||||
if (method == "POST" || method == "PUT" || method == "PATCH") {
|
||||
setRequestProperty("Content-Type", "application/json")
|
||||
doOutput = true
|
||||
val data = when (body) {
|
||||
@ -51,6 +52,8 @@ suspend fun apiRequest(
|
||||
wr.write(data)
|
||||
wr.flush()
|
||||
}
|
||||
|
||||
try {
|
||||
if (responseCode >= 400) {
|
||||
BufferedReader(InputStreamReader(errorStream)).use {
|
||||
val response = it.readText()
|
||||
@ -63,6 +66,9 @@ suspend fun apiRequest(
|
||||
val response = it.readText()
|
||||
onOk?.invoke(response)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.message?.let { onFail?.invoke(it) }
|
||||
}
|
||||
}
|
||||
eventually?.invoke()
|
||||
}
|
||||
@ -77,7 +83,7 @@ object {{with .Info}}{{.Title}}{{end}}{
|
||||
val {{with $item}}{{lowCamelCase .Name}}: {{parseType .Type}}{{end}}{{if ne $i (add $length -1)}},{{end}}{{end}}
|
||||
){{end}}
|
||||
{{with .Service}}
|
||||
{{range .Routes}}suspend fun {{pathToFuncName .Path}}({{with .RequestType}}{{if ne .Name ""}}
|
||||
{{range .Routes}}suspend fun {{routeToFuncName .Method .Path}}({{with .RequestType}}{{if ne .Name ""}}
|
||||
req:{{.Name}},{{end}}{{end}}
|
||||
onOk: (({{with .ResponseType}}{{.Name}}{{end}}) -> Unit)? = null,
|
||||
onFail: ((String) -> Unit)? = null,
|
||||
|
Loading…
Reference in New Issue
Block a user