Skip to content

Latest commit

 

History

History
80 lines (65 loc) · 1.94 KB

TsExportEndpoints.md

File metadata and controls

80 lines (65 loc) · 1.94 KB

Example of endpoint exportation

golang declaration

// Typescript: TSDeclaration= Nullable<T> = T | null;
// Typescript: TSDeclaration= Record<K extends string | number | symbol, T> = { [P in K]: T; }

// Typescript: interface
type HTTPResponse struct {
	Data  interface{} `json:"data"`
	Error interface{} `json:"error"`
}

// Typescript: interface
type FormRequest struct {
	Req   string `json:"req"`
	Count int    `json:"count"`
}

// Typescript: interface
type FormResponse struct {
	Test string `json:"test"`
}

// Typescript: TSEndpoint= path=/postTest;  name=postTest; method=POST; request=FormRequest; response=FormResponse
r.POST("/postTest", func(c *gin.Context) {
    var requestBody FormRequest
    if err := c.BindJSON(&requestBody); err != nil {
        response := HTTPResponse{Data: nil, Error: "wrongData"}
        c.JSON(http.StatusOK, response)
    }
    response := HTTPResponse{Data: FormResponse{Test: fmt.Sprintf("%d", requestBody.Count)}, Error: nil}
    c.JSON(http.StatusOK, response)
})

generated code

//
// namespace server
//

export namespace server {
  export interface FormRequest {
    req: string;
    count: number;
  }

  export interface FormResponse {
    test: string;
  }

  export interface HTTPResponse {
    data: unknown;
    error: unknown;
  }

  // Typescript: TSEndpoint= path=/postTest;  name=postTest; method=POST; request=FormRequest; response=FormResponse
  // server/server.go Line: 73
  export const postTest = async (data: FormRequest): Promise<{ data: FormResponse; error: Nullable<string> }> => {
    return (await api.POST("/postTest", data)) as { data: FormResponse; error: Nullable<string> };
  };
}

How to use in frontend

const input = <server.FormRequest>{ req: "some request", count: 456 };
const { data, error } = await server.postTest(input);
if (!error) {
  console.log(data);
  result = data.test;
}

exported code template fetch template