protoc-gen-ts/README.md

55 lines
1.4 KiB
Markdown

# protoc-gen-typescript-http
Generates Typescript types and service clients from protobuf definitions
annotated with
[http rules](https://github.com/googleapis/googleapis/blob/master/google/api/http.proto).
The generated types follow the
[canonical JSON encoding](https://developers.google.com/protocol-buffers/docs/proto3#json).
**Experimental**: This library is under active development and breaking changes
to config files, APIs and generated code are expected between releases.
## Using the plugin
For examples of correctly annotated protobuf defintions and the generated code,
look at [examples](./examples).
### Install the plugin
```bash
go get git.apinb.com/bsm-tools/protoc-gen-ts
```
Or download a prebuilt binary from [releases](./releases).
### Invocation
```bash
protoc
--typescript-http_out [OUTPUT DIR] \
[.proto files ...]
```
______________________________________________________________________
The generated clients can be used with any HTTP client that returns a Promise
containing JSON data.
```typescript
const rootUrl = "...";
type Request = {
path: string,
method: string,
body: string | null
}
function fetchRequestHandler({path, method, body}: Request) {
return fetch(rootUrl + path, {method, body}).then(response => response.json())
}
export function siteClient() {
return createShipperServiceClient(fetchRequestHandler);
}
```