Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve AIP support in field_configuration.path_param_name containing #3364

Merged
merged 1 commit into from
Jun 19, 2023

Conversation

same-id
Copy link
Contributor

@same-id same-id commented Jun 16, 2023

When adding "=" to path_param_name:

(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  field_configuration: {
    path_param_name: "name=items/*"
  }
}

Like Google AIP APIs like to do we get the following output.

"/v1/{name=items/*}": {
  "get": {
    "summary": "GetItem",
    "parameters": [
      {
        "name": "name=items/*",
      }
    ]
  }
}

But we actually want something like this, which looks better in docs:

"/v1/{name=items/*}": {
  "get": {
    "summary": "GetItem",
    "parameters": [
      {
        "name": "name",
      }
    ]
  }
}

Not adding a feature flag since I assume no one uses "=" in path param overrides today since it doesn't look that good.

References to other Issues or PRs

Have you read the Contributing Guidelines?

Brief description of what is fixed or changed

Other comments

@google-cla
Copy link

google-cla bot commented Jun 16, 2023

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Copy link
Collaborator

@johanbrandhorst johanbrandhorst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your PR! I'm a little confused, can't you just set the value to item in your field configuration? There's nothing parsing this field (this PR hardly does it either), so why use the full definition?

When adding "=" to path_param_name:

```
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  field_configuration: {
    path_param_name: "name=items/*"
  }
}
```

Like Google AIP APIs like to do we get the following output.

```
"/v1/{name=items/*}": {
  "get": {
    "summary": "GetItem",
    "parameters": [
      {
        "name": "name=items/*",
      }
    ]
  }
}
```

But we actually want something like this, which looks better in docs:

```
"/v1/{name=items/*}": {
  "get": {
    "summary": "GetItem",
    "parameters": [
      {
        "name": "name",
      }
    ]
  }
}
```

Not adding a feature flag since I assume no one uses "=" in path param
overrides today since it doesn't look that good.
@same-id
Copy link
Contributor Author

same-id commented Jun 17, 2023

Hi,

Some minor thing first:
I updated the commit message / PR comment from
item=items/* to name=items/*

To your question,

Before this commit I had just name - didn't even have to add an annotation (like you suggest).
It looks like this:

image
image

Notice that name follows https://google.aip.dev/122

But it doesn't look that great in the url: v1/{name} - since it hides the vaults/ sub-part.

If you look at how Google shows this:
image

A little bit nicer.

If I use path_param_name it changes the param name in both places:

(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
  field_configuration: {
    path_param_name: "name=items/*"
  }
}

I get

image

Which is nice.
But then I also get this:
image
Which looks meh

This PR simply makes it look better in the openapi.yml and then the subsequent generated docs:
image
image

I think this could be nicer for other peeps developing according to Google's AIP.

Copy link
Collaborator

@johanbrandhorst johanbrandhorst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the illustrative example, one of my worries here was that introducing any sort of parsing (which this does) might mean we should just properly parse the whole thing, but I'm satisfied that this should be a pretty harmless change. That said, this is technically breaking, since users may be using = for other things in this field today, so if we get any reports of breakages we may have to revert this and put it behind a flag.

@johanbrandhorst johanbrandhorst merged commit 05e3d66 into grpc-ecosystem:main Jun 19, 2023
18 checks passed
@same-id
Copy link
Contributor Author

same-id commented Jun 19, 2023

Exactly my thoughts.
I don't think this will break any users' current (fingers crossed - who uses = anyway :-) )

Maybe was worth documenting this somehow, or add a test.
Anyway, glad it got it.

michaelkedar pushed a commit to google/osv.dev that referenced this pull request Sep 11, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[github.com/grpc-ecosystem/grpc-gateway/v2](https://togithub.com/grpc-ecosystem/grpc-gateway)
| require | minor | `v2.16.0` -> `v2.18.0` |
|
[google.golang.org/protobuf](https://togithub.com/protocolbuffers/protobuf-go)
| require | minor | `v1.30.0` -> `v1.31.0` |
|  |  | lockFileMaintenance | All locks refreshed |
| [jekyll-feed](https://togithub.com/jekyll/jekyll-feed) | | minor |
`0.15.1` -> `0.17.0` |

---

### Release Notes

<details>
<summary>grpc-ecosystem/grpc-gateway
(github.com/grpc-ecosystem/grpc-gateway/v2)</summary>

###
[`v2.18.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.18.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.17.1...v2.18.0)

#### What's Changed

- Enable a few more golangci-lint linters by
[@&#8203;pkwarren](https://togithub.com/pkwarren) in
[grpc-ecosystem/grpc-gateway#3546
- Add .golangci.yml config by
[@&#8203;pkwarren](https://togithub.com/pkwarren) in
[grpc-ecosystem/grpc-gateway#3548
- Fix: path item objects become block scalars
\[[#&#8203;3557](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/3557)]
by [@&#8203;qawatake](https://togithub.com/qawatake) in
[grpc-ecosystem/grpc-gateway#3566
- Add remove_internal_comments option by
[@&#8203;same-id](https://togithub.com/same-id) in
[grpc-ecosystem/grpc-gateway#3560

#### New Contributors

- [@&#8203;benjx1990](https://togithub.com/benjx1990) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3552
- [@&#8203;qawatake](https://togithub.com/qawatake) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3566

**Full Changelog**:
grpc-ecosystem/grpc-gateway@v2.17.1...v2.18.0

###
[`v2.17.1`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.17.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.17.0...v2.17.1)

#### What's Changed

- genopenapi: set source code info explicitly by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[grpc-ecosystem/grpc-gateway#3544
- Record the filename of files that are missing SourceCodeInfo by
[@&#8203;ebilling](https://togithub.com/ebilling) in
[grpc-ecosystem/grpc-gateway#3545

#### New Contributors

- [@&#8203;ebilling](https://togithub.com/ebilling) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3545

**Full Changelog**:
grpc-ecosystem/grpc-gateway@v2.17.0...v2.17.1

###
[`v2.17.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.17.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.16.2...v2.17.0)

#### What's Changed

- Fix renovate.yml overwriting .bazelrc by
[@&#8203;adambabik](https://togithub.com/adambabik) in
[grpc-ecosystem/grpc-gateway#3451
- fix: successful typo by
[@&#8203;testwill](https://togithub.com/testwill) in
[grpc-ecosystem/grpc-gateway#3510
- Update example buf.gen.yaml by
[@&#8203;pkwarren](https://togithub.com/pkwarren) in
[grpc-ecosystem/grpc-gateway#3522
- fix(deps): replace all uses of golang/protobuf/protobuf by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[grpc-ecosystem/grpc-gateway#3516
- Feature/issue 3051 swagger preserve rpc order by
[@&#8203;CemGurhan](https://togithub.com/CemGurhan) in
[grpc-ecosystem/grpc-gateway#3500

#### New Contributors

- [@&#8203;testwill](https://togithub.com/testwill) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3510
- [@&#8203;pkwarren](https://togithub.com/pkwarren) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3522
- [@&#8203;aimuz](https://togithub.com/aimuz) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3516
- [@&#8203;CemGurhan](https://togithub.com/CemGurhan) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3500

**Full Changelog**:
grpc-ecosystem/grpc-gateway@v2.16.2...v2.17.0

###
[`v2.16.2`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.16.2)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.16.1...v2.16.2)

#### What's Changed

- chore: replace the Goreleaser's deprecated option `--rm-dist` to
`--clean` by
[@&#8203;suzuki-shunsuke](https://togithub.com/suzuki-shunsuke) in
[grpc-ecosystem/grpc-gateway#3438
- chore: stop using the deprecated field `archives.replacements` by
[@&#8203;suzuki-shunsuke](https://togithub.com/suzuki-shunsuke) in
[grpc-ecosystem/grpc-gateway#3436

#### New Contributors

- [@&#8203;suzuki-shunsuke](https://togithub.com/suzuki-shunsuke) made
their first contribution in
[grpc-ecosystem/grpc-gateway#3438

**Full Changelog**:
grpc-ecosystem/grpc-gateway@v2.16.1...v2.16.2

###
[`v2.16.1`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.16.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.16.0...v2.16.1)

#### What's Changed

- Rename LICENSE.txt to LICENSE by
[@&#8203;pgmitche](https://togithub.com/pgmitche) in
[grpc-ecosystem/grpc-gateway#3345
- feat: message supports enum field option for query params by
[@&#8203;zhb127](https://togithub.com/zhb127) in
[grpc-ecosystem/grpc-gateway#3352
- remove glog from a bunch of spots by
[@&#8203;kn100](https://togithub.com/kn100) in
[grpc-ecosystem/grpc-gateway#3361
- Improve AIP support in field_configuration.path_param_name containing
by [@&#8203;same-id](https://togithub.com/same-id) in
[grpc-ecosystem/grpc-gateway#3364
- Hide comments on omitted enum default values by
[@&#8203;same-id](https://togithub.com/same-id) in
[grpc-ecosystem/grpc-gateway#3366
- fix(docs): correcting mux routing error code example by
[@&#8203;tjasko](https://togithub.com/tjasko) in
[grpc-ecosystem/grpc-gateway#3409
- Fix the place where format property in placed for repeated fields by
[@&#8203;far4599](https://togithub.com/far4599) in
[grpc-ecosystem/grpc-gateway#3410
- Handle httpbody not having data to return by
[@&#8203;achew22](https://togithub.com/achew22) in
[grpc-ecosystem/grpc-gateway#3415
- bazel: bump Bazel repositories versions by
[@&#8203;adambabik](https://togithub.com/adambabik) in
[grpc-ecosystem/grpc-gateway#3413

#### New Contributors

- [@&#8203;pgmitche](https://togithub.com/pgmitche) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3345
- [@&#8203;zhb127](https://togithub.com/zhb127) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3352
- [@&#8203;kn100](https://togithub.com/kn100) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3361
- [@&#8203;tjasko](https://togithub.com/tjasko) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3409
- [@&#8203;far4599](https://togithub.com/far4599) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3410

**Full Changelog**:
grpc-ecosystem/grpc-gateway@v2.16.0...v2.16.1

</details>

<details>
<summary>protocolbuffers/protobuf-go
(google.golang.org/protobuf)</summary>

###
[`v1.31.0`](https://togithub.com/protocolbuffers/protobuf-go/releases/tag/v1.31.0)

[Compare
Source](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.30.0...v1.31.0)

#### Notable changes <a name="v1.31-notable-changes"></a>

**New Features**

-   [CL/489316](https://go.dev/cl/489316): types/dynamicpb: add NewTypes
- Add a function to construct a dynamic type registry from a
protoregistry.Files
- [CL/489615](https://go.dev/cl/489615): encoding: add MarshalAppend to
protojson and prototext

**Minor performance improvements**

- [CL/491596](https://go.dev/cl/491596): encoding/protodelim: If
UnmarshalFrom gets a bufio.Reader, try to reuse its buffer instead of
creating a new one
- [CL/500695](https://go.dev/cl/500695): proto: store the size of tag to
avoid multiple calculations

**Bug fixes**

- [CL/497935](https://go.dev/cl/497935): internal/order: fix sorting of
synthetic oneofs to be deterministic
- [CL/505555](https://go.dev/cl/505555): encoding/protodelim: fix
handling of io.EOF

</details>

<details>
<summary>jekyll/jekyll-feed (jekyll-feed)</summary>

###
[`v0.17.0`](https://togithub.com/jekyll/jekyll-feed/blob/HEAD/History.markdown#0170--2022-10-14)

[Compare
Source](https://togithub.com/jekyll/jekyll-feed/compare/v0.16.0...v0.17.0)

##### Documentation

- Update CI status badge
([#&#8203;363](https://togithub.com/jekyll/jekyll-feed/issues/363))

##### Development Fixes

- Add Ruby 3.1 to the CI matrix
([#&#8203;365](https://togithub.com/jekyll/jekyll-feed/issues/365))

##### Minor Enhancements

- Allow disabling of jekyll-feed while in development
([#&#8203;370](https://togithub.com/jekyll/jekyll-feed/issues/370))

###
[`v0.16.0`](https://togithub.com/jekyll/jekyll-feed/blob/HEAD/History.markdown#0160--2022-01-03)

[Compare
Source](https://togithub.com/jekyll/jekyll-feed/compare/v0.15.1...v0.16.0)

##### Minor Enhancements

- Add support for `page.description` in front matter to become entry
`<summary>`
([#&#8203;297](https://togithub.com/jekyll/jekyll-feed/issues/297))

##### Bug Fixes

- Fold private methods into the `:render` method as local variables
([#&#8203;327](https://togithub.com/jekyll/jekyll-feed/issues/327))
- Check `post.categories` instead of `post.category`
([#&#8203;357](https://togithub.com/jekyll/jekyll-feed/issues/357))
- Switched xml_escape for `<![CDATA[]]>` for post content
([#&#8203;332](https://togithub.com/jekyll/jekyll-feed/issues/332))

##### Development Fixes

- Add Ruby 3.0 to CI
([#&#8203;337](https://togithub.com/jekyll/jekyll-feed/issues/337))
- Lock RuboCop to v1.18.x
([#&#8203;348](https://togithub.com/jekyll/jekyll-feed/issues/348))
- Add workflow to release gem via GH Action
([#&#8203;355](https://togithub.com/jekyll/jekyll-feed/issues/355))

##### Documentation

- Use `.atom` extension in documented examples since we write an Atom
feed ([#&#8203;359](https://togithub.com/jekyll/jekyll-feed/issues/359))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 6am on wednesday" in timezone
Australia/Sydney, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/google/osv.dev).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi42OC4xIiwidXBkYXRlZEluVmVyIjoiMzYuODMuMCIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants