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

feat: Add returning value for HTTP PUT and PATCH methods #1322

Merged
merged 3 commits into from
Jan 19, 2021

Conversation

imjoey
Copy link
Member

@imjoey imjoey commented Jan 18, 2021

Signed-off-by: imjoey [email protected]

Please answer these questions before submitting a pull request

  • Why submit this pull request?

  • Bugfix

  • New feature provided

  • Improve performance

  • Backport patches

  • Related issues

Related to #1154 .


Bugfix

  • Description

As described in #1154 , when manipulating an object via PUT/PATCH method in manager-api, there is no data returned.

  • How to fix?

In order to get along with APISIX Admin API, this PR is going to additionally return all the object data back for PUT or PATCH methods.

This PR is also a counterpart of #1277 , will completely revolve #1154 .

@imjoey
Copy link
Member Author

imjoey commented Jan 18, 2021

@nic-chen @ShiningRush @tokers CI passed and ready for review. Thanks

@nic-chen
Copy link
Member

LGTM, add some E2E test should be better. thanks @imjoey

return handler.SpecCodeResponse(err), err
}

return nil, nil
return ret, nil
Copy link
Contributor

Choose a reason for hiding this comment

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

We can directly return &input.Consumer, because store is just return the pointer of it.
So that we can avoid to return object in Store, keep one way to get changes would be better.

Copy link
Member

Choose a reason for hiding this comment

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

ping @imjoey

Copy link
Member Author

@imjoey imjoey Jan 18, 2021

Choose a reason for hiding this comment

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

@ShiningRush Thanks for your reviewing. IMHO, directly returning the &input.Consumer would mix up the DTO and the DAO, which may be confusing to developer. Please allow me use the following case as an example:

type SetInput struct {
	entity.Consumer
	Username string `auto_read:"username,path"`
}

func (h *Handler) Set(c droplet.Context) (interface{}, error) {
	input := c.Input().(*SetInput)
	if input.ID != nil && utils.InterfaceToString(input.ID) != input.Username {
		return &data.SpecCodeResponse{StatusCode: http.StatusBadRequest},
			fmt.Errorf("consumer's id and username must be a same value")
	}
	if input.Username != "" {
		input.Consumer.Username = input.Username
	}
	input.Consumer.ID = input.Consumer.Username
	ensurePluginsDefValue(input.Plugins)

	err := h.consumerStore.Update(c.Context(), &input.Consumer, true)
	if err != nil {
		return handler.SpecCodeResponse(err), err
	}

        // Notice: Desensitize the response data  =======
        input.Consumer.Desc = "*******"

	return &input.Consumer, nil
}

As the comment mentioned above, in order to do customization on the response data, we need to change input value for output, which seems some sort of weird.

Looking forward to your insights. Thanks.

Copy link
Contributor

Choose a reason for hiding this comment

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

directly returning the &input.Consumer would mix up the DTO and the DAO

In this case, input is not only DTO also a resource.
I support to return resource in Patch because it is indeed different with input.But Update method required a complete resource, so DTO also is a resource.

which may be confusing to developer

On the contrary, the situation that confuses developers is that you return an object and make them think that you did not perform any operations on the original object, but this is not the truth.

BTW: here is a better way to implement you example that move logic to entity,so code could be

....

input.Consumer.Desensitize()
return &input.Consumer, nil

rich domain model would be more meaningful.

Copy link
Member Author

@imjoey imjoey Jan 18, 2021

Choose a reason for hiding this comment

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

@ShiningRush

Thanks for getting back. Sorry for not quite catching your points. Let's wait for others opinions. 😄

BTW: here is a better way to implement you example that move logic to entity,so code could be

Thanks. The code you provided is awesome. While IMHO, it is still not able to resolve the mixup of usage of request and response.

@imjoey
Copy link
Member Author

imjoey commented Jan 18, 2021

LGTM, add some E2E test should be better. thanks @imjoey

@nic-chen agree with you and thanks for the advice. Do you mean lacking for test cases on PATCH methods?

AFAIK, we indeed need much more backend tests cases for both E2E and Unit test. Cause almost all test case only use PUT for creating and updating, which leads to extremely low testing coverage for creating by POST and updating by PATCH.

The test cases in this PR will only try to cover the changes within this PR. So how about we commit other PRs for improving the testing coverage? I would be happy to commit an issue for discussion.

Looking forward to your feedback. Much appreciated.

@nic-chen
Copy link
Member

The test cases in this PR will only try to cover the changes within this PR. So how about we commit other PRs for improving the testing coverage? I would be happy to commit an issue for discussion.

that should be great. thanks.

@imjoey
Copy link
Member Author

imjoey commented Jan 19, 2021

@ShiningRush I think you are right. Simply considering the &input.Consumer as a Resource will make the question be easier. I will renew the PR according to your suggestions. Thanks.

BTW, in #1277 , I also added the returned data for store.Create. Shall I revert that change to keep same as this?

@juzhiyuan
Copy link
Member

ok, we may create an issue to track this if needed :)

@juzhiyuan juzhiyuan merged commit 4cf46b0 into apache:master Jan 19, 2021
@imjoey imjoey deleted the return_after_http_put branch January 19, 2021 04:14
@imjoey
Copy link
Member Author

imjoey commented Jan 19, 2021

ok, we may create an issue to track this if needed :)

@juzhiyuan @ShiningRush Thanks. Then I will commit an issue for tracking the Create/Update methods of Storage. 😄

JieTrancender pushed a commit to JieTrancender/apisix-dashboard that referenced this pull request Jan 21, 2021
* fix: remote_addrs (apache#948)

* test: fix CI unstable (E2E) (apache#953)

* test: e2e test chash upstream hash on (consumer, header, cookie)   (apache#936)

related apache#908

* fix: hack to fix the checking of `remote_addrs` (apache#952)

* fix: hack to fix the checking of `remote_addrs`

* fix: use correct method to get object's length (apache#957)

* fix: use correct method to get object's length

* api(conf/conf.yaml): aligned comments (apache#969)

* fix: increase the sleep time to fix e2e test unstable issue (apache#976)

* feat: support disable property for json schema according to APISIX's change (apache#904)

* feat: support disable property for json schema according to APISIX's change

* feat: add etcd basic auth support (apache#951)

* add etcd basic auth support

* test: e2e test balancer (roundrobin upstream) (apache#972)

close apache#988

* test: e2e test chash upstream with key (wrong key, vars) (apache#971)

close apache#993

* fix: fix router name conflict in route_service_upstream_test.go.

* fix(Plugin): use codemirror instead of form in plugin module (apache#898)

* feat(plugin): added code mirror

* chore: format codes

* feat(Plugin): remove a7 plugin

* feat(Plugin): remove @api7-dashboard/plugin

* feat: added codes format

* feat: use local icon files

* feat: update ASF Release cfg

* feat: update ASF Release cfg

* feat(CI): supoort markdown links checker (apache#981)

* fix: English spelling (apache#1002)

* docs: optimize metrics document (apache#970)

* docs: optimize metrics document

* docs: modified style

* docs: modified style

* Update USER_GUIDE.zh-CN.md

* Update USER_GUIDE.zh-CN.md

* Update USER_GUIDE.md

Co-authored-by: 琚致远 <[email protected]>

* feat: change proxy target to localhost when test (apache#1001)

* feat: change proxy target to localhost when test

* Update frontend-e2e-test.yml

* Update frontend-e2e-test.yml

* docs(contributing): added commit message guidelines (apache#1007)

* chore: enrich error log (apache#977)

* chore: enrich error log

* test: add test case for log caller

* fix: test error

* test

* fix: use invalid ip

* fix: cli test error

* fix: typo

* fix: spelling (apache#1004)

* feat: added priority (apache#1006)

* docs: update README's style (apache#1009)

* docs: update README's style

* Update README.zh-CN.md

* docs: only keep English docs (apache#1011)

related apache#1009

* feat: add access log for Manager API (apache#994)

* feat: access log

* feat: access log

* chore: access log format

* chore: access log format

* test: add test case for access log

* chore: add access log example

* fix: according to review

* test: add unit test for `logging` middleware

* fix: license checker CI failed

* release: new version 2.1.1 (apache#959)

* docs: update CHANGELOG for v2.1.1

* docs: update CHANGELOG for v2.1.1

* docs: update CHANGELOG for v2.1.1

* docs: update deployment doc for v2.1.1

* docs: update CHANGELOG for v2.1.1

* feat(web): upgrade web version

* docs: update README and changelog

* feat(docs): update latest version to 2.1.1

* fix(docs): use correct apisix's version

Co-authored-by: nic-chen <[email protected]>
Co-authored-by: 琚致远 <[email protected]>

* fix(husky): pass the web folder (apache#1008)

* fix(husky): unset git dir

* chore: remove private flag

* chore: remove useless env

* chore(codes): format codes

* chore(web): update version

* feat:  support to show version info when manager-api starting  (apache#900)

fix apache#866
fix apache#853

* fix: delete POST method in /apisix/admin/consumer (apache#852) (apache#868)

fix apache#852

* Revert "fix: delete POST method in /apisix/admin/consumer (apache#852) (apache#868)" (apache#1019)

This reverts commit 78db532.

* feat: use Swagger to maintain API document for Manager API (apache#992)

* feat: api doc

* feat: api doc

* feat: api doc

* fix: CI failed

* fix: remove useless comments

* fix: according to review

* fix: license

* fix: according to review

* fix: according to review

* chore: remove useless doc file

* fix: according to review

* fix: typo

* feat: remove husky from the web (apache#1018)

* feat: remove husky from the web

* chore: remove husky folder

* fix: PATCH method bug (apache#1005)

* fix: PATCH method bug

* test: use sub path patch in e2e test

* fix: lint

* fix: naming stype

* fix: according to review

* fix: style

* feat: add a unit test for consumer and remove implicit init (apache#859)

* feat: add a unit test for consumer and remove implicit init

* fix: add implict init function to compatible integration tests

* chore: add other cosumer unit test and refacotor some code

* fix: remove intergration instead of unit test

* fix: add EOL for file

* chore: use sub test to run table test

* chore: test desc

* chore: test desc

Co-authored-by: Wen Ming <[email protected]>

* fix: Use JSONSchema to verify the original data submitted by users (apache#986)

* fix: JSONSchema verification should be performed on the original data submitted by the user

* fix: remove debug info

* test: add test cases

* fix: error info

* fix: script data type

* fix: script data type

* fix: error

* fix: error message

* fix: CI failed

* fix: error

* fix: according to review

* fix: e2e test case

* fix: according to review

* ci: support dependency bot (apache#1021)

* ci: support dependency bot

* Update dependabot.yml

* feat: update api's version to 2.2-rc1 (apache#1025)

* fix: remove the dependency on git from the build script (apache#1024)

* fix: remove the dependency on git from the build script

* ci: add test for release

* ci: add test for release

* test

* fix error

* fix error

* ci: support gitleaks to scan hardcoded password (apache#1022)

* ci: support codeql-analysis (apache#1020)

* ci: support codeql-analysis

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* chore(deps): bump actions/setup-node from v1 to v2.1.3 (apache#1029)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from v1 to v2.1.3.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v1...27082ce)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* ci: fix release test run failed (apache#1032)

fix release test run failed

* fix(plugin): Inject the disable property into every plugin's jsonschema, the same as manager-api. (apache#1031)

uses the correct Proxy host

fix apache#1027
fix apache#1028

* chore(deps): bump wei/wget from v1 to v1.1.1 (apache#1046)

* refactor: 🧹 remove trailing whitespace (apache#1052)

* feat(CI): add a GitHub Action to lint the Markdown (apache#1053)

- Add a Markdownlint config file
- Lint Markdown for MD038/no-space-in-code Spaces inside code span elements

https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md#md038---spaces-inside-code-span-elements

* docs: update CHANGELOG for v2.2 (apache#1037)

* docs: update CHANGELOG for v2.2

Co-authored-by: nic-chen <[email protected]>
Co-authored-by: 琚致远 <[email protected]>

* feat(CI): add a GitHub Action to lint the YAML (apache#1060)

- add a `.yamllint` config file
- lint some YAML

* chore(deps): bump actions/setup-go from v1 to v2.1.3 (apache#1030)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from v1 to v2.1.3.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@v1...37335c7)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): update actions/setup-node requirement to v2.1.4 (apache#1062)

Updates the requirements on [actions/setup-node](https://github.com/actions/setup-node) to permit the latest version.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/commits/c46424eee26de4078d34105d3de3cc4992202b1e)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: absolute Paths conf.WebDir (apache#1055)

* fix: absolute Paths conf.WebDir

* style: use filepath.Join to splicing path, change conf.WebDir to 'html/'

* style: use success code to check test return

Co-authored-by: fu_changjie <[email protected]>

* feat: Refactor frontend e2e (apache#1056)

* feat: remove puppeteer dependency

* feat: init cypress

* feat: add login logout test case

* feat: add crete and delete test case

* feat: add e2e test serveUrl

* feat: refactor fe e2e ci

* feat: update package.json

* feat: update package.json

* feat: update package.json

* docs: add front-end-e2e.md

* feat: add ASF licenses

* feat: add ASF licenses

* fix: not cache cypress error

* feat: Remove unuseful files

* feat: update frontend-e2e-test.yml

* feat: clean code

* feat: add login with invalid credentials test case

* feat: clean code

* feat: Optimization test cases

* feat: set english as default language

* feat: set login default language

* feat: add search route befofe delete

* feat: support search route by label (apache#1061)

* feat: support search route by label (apache#861)

* doc: add search by route

* feat: add more unit test

* update: check the label parameter

* fix: unit test

* feat: implement API to get apisix instances status (apache#958)

related apache#849 .

* fix: create_and_delete_route wrong way to locate prometheus button (apache#1069)

* feat(plugin): use ajv to validate data (apache#1047)

* feat: use ajv to validate data

* style: format codes

* style: format codes

* style: remove extra ;

* style: format codes

* docs: update README to remind that the master version should work with the APISIX master version. (apache#1071)

* feat: refactor online debug for backend (apache#979)

* feat: refactor online debug be

* fix: update test

* fix: upate e2e test

* fix: e2e test

* fix: e2e test

* fix: debug

* fix: debug

* fix: case 2

* fix: more cases

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: e2e

* fix: typo

* fix: add Protocol to on debug rewarding

* fix: ci

* fix: ci

* fix: ci

* fix: enhancement refer to code review

* fix: define global variable

* fix: put route_online_debug into a separate file

* fix: typo

* fix: add license

Co-authored-by: 琚致远 <[email protected]>

* feat: refactor online debug for frontend (apache#978)

* feat: refactor online debug fe

* fix: lint errors

* fix: update yarn.lock

* fix: url required

* fix: update refer to the review

* fix: ci error

* fix: update refer to view

* fix: update yarn.lock

* fix: add attr protocol  to debug request

* fix: update params name

* fix: update yarn.lock

* fix: update code review

* fix: lint errors

* fix: typo

* fix: codemirror height

* fix: update yarn.lock

* feat: put server_info under the admin api (apache#1076)

* feat: added info page (apache#949)

* add: Static Info Pages

* fix: 代码格式化,使用Select组件

* fix: 优化Select组件和表格联动

* fix: ./Info.less error not found.

* fix: Format code

* fix: delete console.log()

* fix: Optimized code

* fix: Optimized code

* fix: Modify data, wait for api.

* feat: integrate with API

* fix: format codes

* fix: i18n

* fix: link to instructions for use

* fix: format codes

* fix: format codes

* fix: format codes

* fix: node type

* Update web/src/pages/ServerInfo/List.tsx

Co-authored-by: litesun <[email protected]>

* fix: format codes

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: litesun <[email protected]>

* feat(FE): update route e2e (apache#1074)

* Update schema to master (apache#1080)

* debug

* fix: sort schema.json

* fix: unit test remote_addr validate pattern

* fix: update remote_addr validate failed msg

Co-authored-by: nic-chen <[email protected]>

* feat: active check support custom port (apache#1078)

* feat: active check support custom port

* fix: omit null value

* Update web/src/pages/Upstream/locales/en-US.ts

Co-authored-by: litesun <[email protected]>

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: litesun <[email protected]>

* feat: support  to line feed (apache#1084)

* chore: remove Lua dependency (apache#1083)

* chore: remove Lua dependency

* feat: use selector to choose methods (apache#1082)

* fix: "method" can be null value

* Update RequestConfigView.tsx

Co-authored-by: 琚致远 <[email protected]>

* fix: e2e test cases unstable (apache#1073)

* Refactor publish offline be  (apache#1081)

* feat: support  patch in route module

* fix: add test cases refer to the code review

* fix: define status in route struct

* fix: set default status for route

* test: update test cases

* fix: update test cases

* fix: test cases failed

* fix: add sleep after create route

* fix: update sleep

* fix: test case

* fix: use a same type for status

Co-authored-by: nic-chen <[email protected]>

* feat: added websocket tab for route (apache#1079)

* feat: added websocket tab for route

* Update RequestConfigView.tsx

Co-authored-by: 琚致远 <[email protected]>

* feat: refactor publish/offline fe (apache#991)

* feat: refactor online debug fe

* fix: use PATCH instead of PUT

* fix: bug

* fix: code review

* fix(FE): delete route error

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: litesun <[email protected]>

* feat: upstream support set `pass_host` parameter (apache#1088)

* feat: upstream support set `pass_host` parameter

* feat: i18n

* feat: support labels list  (apache#1072)

* feat: support labels list

* feat(FE): allow user write FE e2e by using local manager-api server  (apache#1090)

* feat: add local manager-api mode when write FE e2e test case

* feat: update package.json

* fix: add protocol select (apache#1092)

* fix: error throws when delete all params

* fix: add protocol select

* fix: add online debug to USER_GUIDE.md (apache#1091)

Co-authored-by: 琚致远 <[email protected]>

* test: add frontend e2e test (create and delete consumer with key-auth) (apache#1068)

* test: add front e2e test (create and delete consumer with key-auth)

* add invaild json check

* test: modify indentation, modify method for access consumer page, add JSON.stringify

* test : modify indentation

* remove useless code, modify JSON.stringify()

* chore: modify comment

Co-authored-by: 琚致远 <[email protected]>

* fix: misspelling (apache#1101)

* ci:  display more meaningful information when running E2E test cases failed (apache#1012)

* ci:  display more meaningful information when running E2E test cases fail

* feat: provide the ability to view plugin type and other properties (apache#1111)

* feat: add test cases for rejecting request data if it contains an empty array (apache#1112)

* feat: add test cases for empty array

* fix: when enable or disable existing SSL, an error occurred (apache#1064)

* fix: when enable or disable existing SSL, an error occurred

* fix: keep the code uniform

* fix: lint

* fix: keep the code uniform

* fix: license

* chore: add comment to note that json.Marshal and json.Unmarshal may cause the precision loss

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: YuanSheng Wang <[email protected]>

* fix: not allowed to specify `create_time` and `update_time` when create/edit route, service, upstream and consumer (apache#1110)

Related apache#933 .

* feat: add spell checker (apache#1013) (apache#1107)

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: Alex Zhang <[email protected]>

* fix: delete POST method in /apisix/admin/consumer  (apache#1109)

fixed apache#852
related apache#868

* chore: introduce corba as the cli scafford (apache#773)

related apache#739

* feat(FE): add service module (apache#1089)

* feat: init service

* feat: add service list page

* feat: add service step header

* feat: add basic information page

* feat: add plugin page

* feat: update license

* feat: add create service

* feat: add list operation

* feat: add edit mode

* feat: add service edit

* feat: remove useless file

* feat: clean code

* feat: validate upstream form

* feat: update codes

* feat: update UpstreamForm

* feat: add service_id in route step1 page

* feat: update code

* feat: update comment

* feat: update route transform

* fix: upstreamForm not update when upstream_id change

* feat: add init upstreamFrom default value

Co-authored-by: 琚致远 <[email protected]>

* feat: add route group (apache#999)

* feat: added route label search

* fix: react key warning

* feat: add label drawer

* feat: add save and cancel button in drawer

* feat: added edit feature in labelDrawer

* fix: lost click event when div child is empty

* feat: update route  transform with labels

* feat: add AutoComplete

* feat: use form.list render labels

* feat: clean code

* fix: warning when click save button

* feat: update fetchLabelList

* feat: update create route

* feat: update typing

* Merge branch master into feat-route-group-1

* Update component.ts

* feat: update code

* feat: update i18n

Co-authored-by: 琚致远 <[email protected]>

* fix: when create a route without ID in request body by Admin API, it can't be displayed in Manager API (apache#1063)

* fix: when the ID in body of a resource is empty, it cannot be displayed in the list

* test: add test case

* fix: unit test fail

* fix: error

* test: update test cases

* test: update test cases

* chore: naming style

* test: add test cases for create route by POST

* fix: unit test failed

* fix: manager api host port for e2e

* chore: sleep more time

* chore: code refactor

* fix: error

* fix: unit test failed

* fix: be consumer e2e test ci failed in pr#999 (apache#1118)

* fix: be consumer e2e test ci failed in pr#999

* fix: online debug sleep

Co-authored-by: 琚致远 <[email protected]>

* fix: fix some sleep location in e2e test (apache#1123)

Co-authored-by: 琚致远 <[email protected]>

* chore: adjust directory structure of api (apache#1108)

chore: adjust directory structure of api

* fix: can not manual input in upstream (apache#1124)

* fix: can not manual input

* feat: update upstream

Co-authored-by: 琚致远 <[email protected]>

* test: add frontend e2e test (smoke test for ssl) (apache#1096)

* test: add frontend e2e test (smoke test for ssl)
resolve apache#641

* fix: add waiting time

* more test

* fix: modify the delete method

* test: used fixture instead of code

* test: modify certificate.json to add `sni`

* Update certificate.json

Co-authored-by: YuanSheng Wang <[email protected]>
Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: litesun <[email protected]>

* fix:value not change when upstream_id change (apache#1129)

* fix: error check to ensure path id doesn't conflict body id (apache#1067)

Co-authored-by: nic-chen <[email protected]>

* test: add frontend e2e test (smoke test for settings page) (apache#1105)

* feat: support EWMA (apache#1131)

Co-authored-by: 琚致远 <[email protected]>

* test: enhance frontend e2e test stability (consumer) (apache#1116)

* test: fix frontend e2e test (consumer test unstable)

* chore: change comment to lowercase

* chore: add ; symbol

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: YuanSheng Wang <[email protected]>

* test: add frontend e2e test (smoke test for metrics page) (apache#1104)

* test: add frontend e2e test (smoke test for metrics page)

* fixed wrong case title

* update the key name

Co-authored-by: YuanSheng Wang <[email protected]>

* test: add frontend e2e test (create_and_delete_upstream) (apache#1066)

* test: add e2e for web-create_and_delete_upstream

* move to upstream folder

* chore: fix code style

* chore: fix code style

* chore: fix code style

* test:  use camelCase, modify upstream name, method to access upstream list page, modify indentation

* remove useless code

* fixed: CI failed

* chore: modify comment

* add comment

* fixed code style

* chore: fixed title

* chore: title add `should`

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: YuanSheng Wang <[email protected]>
Co-authored-by: litesun <[email protected]>

* feat: support global rules for Manager API (apache#1057)

* feat: support global rules

* feat: improve upstream i18n (apache#1097)

* feat: "upstream" i18n

* feat: "menu" i18n

* feat: "button" i18n

* fix: 'query' button for 'search'

* fix: e2e text

* fix: i18n

* fix: i18n

* Update web/src/components/RightContent/AvatarDropdown.tsx

* Update web/src/locales/en-US/menu.ts

* Update web/src/locales/zh-CN/menu.ts

* style: format codes (#1)

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: liuxiran <[email protected]>

* fix: click avatarDropdown setting, there will be a loading appeared (apache#1132)

Co-authored-by: 琚致远 <[email protected]>

* feat(FE): fetch category from manager-api (apache#1122)

* feat: fetch category from manager-api

* feat: add category sort

* feat: use consumer_schema in consumer module

* feat: use local PluginOrchestration components

* feat: add  license

* feat: pluginOrchestration fetch type from manager-api

* feat: remove json-schema

* feat: add pluginOrchestration i18n

* feat: add showList sort

* feat: clean code

* feat: update name

Co-authored-by: juzhiyuan <[email protected]>

* fix: minish resync_delay for e2e test (apache#922) (apache#1139)

Co-authored-by: 琚致远 <[email protected]>

* test: add frontend e2e test (edit and search route) (apache#1093)

* test: add frontend e2e test (edit and search route)

* chore: modify code style

* chore: add `should`

* chore: add `should`

* test: add sleepTime

* feat: added useForceIntl hook

* feat: improve testcase

* feat: added license header

* feat: use Search instead of Query

* fix: should edit the route case

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: nic-chen <[email protected]>

* chore: add goreport card badge in README (apache#1142)

Signed-off-by: imjoey <[email protected]>

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: nic-chen <[email protected]>

* fix: fetch code from master branch instead of v2.0 in Dockerfile (apache#1146)

Signed-off-by: imjoey <[email protected]>

* feat(FE): add global plugin (apache#1106)

* feat: init global plugin

* feat: init list page

* feat: update plugin list page interaction

* feat: refactor codeMirror

* feat: dont validateData when disable

* feat: update

* feat: init plugin config

* feat: add schemaType in PluginDetail

* feat: use drawer to render pluginDetail

* global plugin access interface

* feat: add plugin sort

* fix: license

* feat: add scope type

* style: format codes

* feat: update global plugin

* feat: add card background

* fix: consumer e2e

* fix: lint

Co-authored-by: juzhiyuan <[email protected]>

* fix: conflicted when update global rule (apache#1152)

* fix: conflicted when update global rule

* fix: unit test failed

Co-authored-by: 琚致远 <[email protected]>

* fix: protable search&reset button i18n (apache#1153)

* fix: protable search&reset button i18n

* fix: markdown lint check error

* fix: update refer to code review

* fix: update refer to the code review

* fix: ssl

Co-authored-by: litesun <[email protected]>
Co-authored-by: 琚致远 <[email protected]>

* fix: input validate for online debug url (apache#1164)

* fix: input validate for online debug url

* fix: update regular expression

Co-authored-by: 琚致远 <[email protected]>

* feat(FE): version manager (apache#1157)

* style: codes-format

* feat: use labels form item

* style: codes-format

* feat: adjust buttons

* style: 调整按钮位置

* feat: 增加警告标示

* feat: added version

* feat: added version

* fix: redirect

* style: format codes

* fix: style

* fix: search labels with the same key  (apache#1151)

* fix: search labels with the same key (apache#1130)

* fix: 2020 update to 2021 (apache#1179)

* fix: correct Version and GitHash output for manager-api command (apache#1162)

* bug: fix Version and add GitHash for manager-api command

Signed-off-by: imjoey <[email protected]>

* feat: git hash support generating .githash for apache release

Signed-off-by: imjoey <[email protected]>

* feat: Add testcase for the new githash info

Signed-off-by: imjoey <[email protected]>

* feat: add test case for .githash content validation

Signed-off-by: imjoey <[email protected]>

* feat: Remove git command dependency for getting git hash

Signed-off-by: imjoey <[email protected]>

* fix: allow empty plugins for global rule (apache#1180)

Co-authored-by: 琚致远 <[email protected]>

* feat: improve upstream e2e testcase (apache#1187)

* fix(cli): support running manager-api cmd in non-default diretory (apache#1184)

* fix: Support version/githash for target api-run (apache#1200)

Signed-off-by: imjoey <[email protected]>

* fix: well handle with malformed auth token in request header (apache#1206)

* fix: not panic if auth token is invalid

Signed-off-by: imjoey <[email protected]>

* do not record the false in log

Signed-off-by: imjoey <[email protected]>

* feat: sync bugfix PRs with the master branch (apache#1171)

* fix(FE): delete global plugin failed (apache#1170)

* fix: delete global plugin failed

* fix: filter disable plugins

* fix: update online debug api protocol validation and error msg (apache#1166)

* fix: update validation and msg

* Update api/internal/handler/route_online_debug/route_online_debug.go

* fix: update refer to code review

Co-authored-by: 琚致远 <[email protected]>

* feat(cli): Show GitHash for manager-api in branch v2.3 (backport apache#1162) (apache#1181)

* fix: correct Version and GitHash output for manager-api command (apache#1162)

* bug: fix Version and add GitHash for manager-api command

Signed-off-by: imjoey <[email protected]>

* feat: git hash support generating .githash for apache release

Signed-off-by: imjoey <[email protected]>

* feat: Add testcase for the new githash info

Signed-off-by: imjoey <[email protected]>

* feat: add test case for .githash content validation

Signed-off-by: imjoey <[email protected]>

* feat: Remove git command dependency for getting git hash

Signed-off-by: imjoey <[email protected]>

* feat: set VERSION to 2.3 in branch v2.3

Signed-off-by: imjoey <[email protected]>

* fix(fe): route search with status (apache#1205)

* fix(fe): route search with status

* fix: version and status select box allowclear

* fix: remove console

* fix: set create_time/update_time as omitempty (apache#1203)

Signed-off-by: imjoey <[email protected]>

* fix(FE): service issues (apache#1209)

* fix: omit checks when empty

* fix: desc search

* fix: omit checks when empty

* feat: remove desc search

* feat: add create service e2e test

* feat: update code

* feat: update code

* chore: sync json schema from Apache APISIX 2.2 (apache#1177)

* chore: sync json schema from Apache APISIX 2.2

* fix: remove schema of plugins that not enable by default

* fix test cases for plugin skywalking which is not enable by default

* chore: expose port for control API

* fix: control API config

* fix yaml format

* fix CI failed

* fix: log path

* fix: log path

Co-authored-by: 琚致远 <[email protected]>

* fix: well handle with malformed auth token in request header (apache#1206) (apache#1210)

* fix: not panic if auth token is invalid

Signed-off-by: imjoey <[email protected]>

* do not record the false in log

Signed-off-by: imjoey <[email protected]>

Co-authored-by: Joey <[email protected]>

* fix: route list search query string (apache#1197)

* fix: route list search qurey string

* fix: well handle with malformed auth token in request header (apache#1206)

* fix: not panic if auth token is invalid

Signed-off-by: imjoey <[email protected]>

* do not record the false in log

Signed-off-by: imjoey <[email protected]>

* feat: add search lables e2e

* feat: add search route labels testcase

* feat: update code

* Update selector.json

* Update search-route.spec.js

Co-authored-by: Joey <[email protected]>
Co-authored-by: 琚致远 <[email protected]>

Co-authored-by: litesun <[email protected]>
Co-authored-by: liuxiran <[email protected]>
Co-authored-by: Joey <[email protected]>
Co-authored-by: nic-chen <[email protected]>
Co-authored-by: nic-chen <[email protected]>

* feat: Improve consumer for i18n (apache#1212)

Signed-off-by: imjoey <[email protected]>

* fix(be): change bodyParams to string to accept any content-type (apache#1202)

* fix: change bodyParams to string to accept any content-type

* fix: ci error

* fix: change bodyparam to type string in e2e test case

* fix: ci

Co-authored-by: 琚致远 <[email protected]>

* chore: use the correct API version (apache#1215)

Co-authored-by: litesun <[email protected]>

* fix: online debug body params support content-type x-www-form-urlencoded (apache#1201)

* fix: online debug body params support content-type x-www-form-urlencoded

* fix: body code mirror support different mode

* fix: use enum instead of real string

* fix: lint error

Co-authored-by: 琚致远 <[email protected]>

* feat: add tips when plugin type is auth and schemaType is not consumer (apache#1219)

Co-authored-by: 琚致远 <[email protected]>

* fix(be): search by status on the route list page is invalid (apache#1207)

* fix search by status on the route list page is invalid

* Fix test cases and references

* Update route.go

* Update route.go

* Format error repair

* use strconv.Itoa Method conversion uint8

* chore: use the correct API version (apache#1215)

Co-authored-by: litesun <[email protected]>

fix: online debug body params support content-type x-www-form-urlencoded (apache#1201)

* fix: online debug body params support content-type x-www-form-urlencoded

* fix: body code mirror support different mode

* fix: use enum instead of real string

* fix: lint error

Co-authored-by: 琚致远 <[email protected]>

feat: add tips when plugin type is auth and schemaType is not consumer (apache#1219)

Co-authored-by: 琚致远 <[email protected]>

* Fix indent format problem

Co-authored-by: 琚致远 <[email protected]>

* feat: added E2E test for plugins (apache#1214)

* fix(FE): delete global plugin failed (apache#1170)

* fix: delete global plugin failed

* fix: filter disable plugins

* fix: update online debug api protocol validation and error msg (apache#1166)

* fix: update validation and msg

* Update api/internal/handler/route_online_debug/route_online_debug.go

* fix: update refer to code review

Co-authored-by: 琚致远 <[email protected]>

* feat(cli): Show GitHash for manager-api in branch v2.3 (backport apache#1162) (apache#1181)

* fix: correct Version and GitHash output for manager-api command (apache#1162)

* bug: fix Version and add GitHash for manager-api command

Signed-off-by: imjoey <[email protected]>

* feat: git hash support generating .githash for apache release

Signed-off-by: imjoey <[email protected]>

* feat: Add testcase for the new githash info

Signed-off-by: imjoey <[email protected]>

* feat: add test case for .githash content validation

Signed-off-by: imjoey <[email protected]>

* feat: Remove git command dependency for getting git hash

Signed-off-by: imjoey <[email protected]>

* feat: set VERSION to 2.3 in branch v2.3

Signed-off-by: imjoey <[email protected]>

* fix(fe): route search with status (apache#1205)

* fix(fe): route search with status

* fix: version and status select box allowclear

* fix: remove console

* fix: set create_time/update_time as omitempty (apache#1203)

Signed-off-by: imjoey <[email protected]>

* fix(FE): service issues (apache#1209)

* fix: omit checks when empty

* fix: desc search

* fix: omit checks when empty

* feat: remove desc search

* feat: add create service e2e test

* feat: update code

* feat: update code

* chore: sync json schema from Apache APISIX 2.2 (apache#1177)

* chore: sync json schema from Apache APISIX 2.2

* fix: remove schema of plugins that not enable by default

* fix test cases for plugin skywalking which is not enable by default

* chore: expose port for control API

* fix: control API config

* fix yaml format

* fix CI failed

* fix: log path

* fix: log path

Co-authored-by: 琚致远 <[email protected]>

* fix: well handle with malformed auth token in request header (apache#1206) (apache#1210)

* fix: not panic if auth token is invalid

Signed-off-by: imjoey <[email protected]>

* do not record the false in log

Signed-off-by: imjoey <[email protected]>

Co-authored-by: Joey <[email protected]>

* fix: route list search query string (apache#1197)

* fix: route list search qurey string

* fix: well handle with malformed auth token in request header (apache#1206)

* fix: not panic if auth token is invalid

Signed-off-by: imjoey <[email protected]>

* do not record the false in log

Signed-off-by: imjoey <[email protected]>

* feat: add search lables e2e

* feat: add search route labels testcase

* feat: update code

* Update selector.json

* Update search-route.spec.js

Co-authored-by: Joey <[email protected]>
Co-authored-by: 琚致远 <[email protected]>

* feat: init cypress with plugin

* style: codes format

* feat: added come testcases

* feat: use the correct api version

* feat: added tip

* feat: added tip

* feat: added test cases

* feat: added disable

* feat: added disable

* feat: added disable

* style: codes format

* feat: added ajv formats

* feat: remove useless codes

Co-authored-by: litesun <[email protected]>
Co-authored-by: liuxiran <[email protected]>
Co-authored-by: Joey <[email protected]>
Co-authored-by: nic-chen <[email protected]>
Co-authored-by: nic-chen <[email protected]>

* fix: sync the preload packages in schema-sync.lua (apache#1216) (apache#1221)

Co-authored-by: 琚致远 <[email protected]>

* feat: add plugin icon (apache#1220)

* feat: add default plugin img

* feat: add plugin edit drawer tips

* feat: change icon opacity to 0.2

* feat: add plugin icon

* feat: update style

Co-authored-by: 琚致远 <[email protected]>

* fix: get and head request did not contain bodyparams (apache#1239)

* feat: Add backport type in PR template (apache#1230)

Signed-off-by: imjoey <[email protected]>

Co-authored-by: 琚致远 <[email protected]>

* feat(FE): skip Cypress binary install when build (apache#1248)

* fix: incomplete label display apache#1044 (apache#1252)

* fix: Adjust the grid layout. (apache#1253)

* docs: added back docs for release 2.3 (apache#1258)

* Update deploy.md

* doc: add changelog for v2.3 (apache#1235)

* Update CHANGELOG.md

Co-authored-by: liuxiran <[email protected]>

Co-authored-by: Alex Zhang <[email protected]>
Co-authored-by: liuxiran <[email protected]>

* feat: enhance plugin schema smoke test (apache#1261)

* feat: add create_time/update_time for global_rule (apache#1218)

* feat: support create_time/update_time for global_rule

Signed-off-by: imjoey <[email protected]>

* Update global_rule schema with new create_time/update_time

Signed-off-by: imjoey <[email protected]>

* Fix backend Unit test failure

Signed-off-by: imjoey <[email protected]>

* fix: use BEJSON to format schema.json

* fix style and code conventions

Signed-off-by: imjoey <[email protected]>

Co-authored-by: liuxiran <[email protected]>

* fix(CI): Update lint workflow so that the Markdown and YAML linters run (apache#1254)

Due to the ASF's policies changing we cannot use the original GitHub Actions for linting as they are not approved

Lint some YAML

Co-authored-by: 琚致远 <[email protected]>

* feat: server info page time stamp display. (apache#1256)

* fix: server info page time stamp display.

* fix: format codes

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: litesun <[email protected]>

* fix: create route display is truncated apache#1188 (apache#1266)

Co-authored-by: 琚致远 <[email protected]>

* test: add backend e2e test for service (apache#1128)

* test: add backend e2e test for service

* test: remove commented code

* test: add service with limit-count plugin test

* add service with all options

* modify test case

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: nic-chen <[email protected]>

* docs: update README and added DockerHub badge (apache#1264)

* docs: update README and added DockerHub badge

* Update deploy-with-docker.md

* Update deploy-with-docker.md

* chore: modify the case's filename (apache#1272)

Co-authored-by: 琚致远 <[email protected]>

* chore: Improve the http body check in e2e test case (apache#1250)

* chore: improve the http body check in e2e testcase

Signed-off-by: imjoey <[email protected]>

* Restore the test case mistakenly delete

Signed-off-by: imjoey <[email protected]>

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: nic-chen <[email protected]>

* docs: add readme for install Apache APISIX Dashboard with RPM package (apache#1273)

* docs: add readme for install Apache APISIX Dashboard with RPM package.

* fixed typo

* use a new file to have detailed

* fixed typo

* Update deploy-with-rpm.md

* Update deploy-with-rpm.md

* Update docs/deploy-with-rpm.md

Co-authored-by: litesun <[email protected]>

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: litesun <[email protected]>

* chore: fix punctuation problem (apache#1280)

* chore: lint Markdown and remove unneeded rules (apache#1274)

Lint Markdown for rules:
- MD009/no-trailing-spaces
- MD012/no-multiple-blanks
- MD022/blanks-around-headings
- MD031/blanks-around-fences

* test: backend e2e test for route with jwt (no algorithm) (apache#1195)

* test: backend e2e test for create consumer with jwt

* chore: add sleeptime

* fixed: test route with jwt-auth plugin

* move the new case to route_with_auth_plugin_test.go

* chore: modify case desc

* chore: modify jwt token name

* modify method for get the token of jwt

* modify file name

Co-authored-by: nic-chen <[email protected]>
Co-authored-by: YuanSheng Wang <[email protected]>
Co-authored-by: 琚致远 <[email protected]>

* docs: Update PULL_REQUEST_TEMPLATE (apache#1244)

* Update PULL_REQUEST_TEMPLATE

* Update .github/PULL_REQUEST_TEMPLATE

Co-authored-by: liuxiran <[email protected]>

* Update PULL_REQUEST_TEMPLATE

* Update PULL_REQUEST_TEMPLATE

Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: liuxiran <[email protected]>

* fix: Delete excess content. (apache#1285)

* fix(FE): Redirect plugin should not show in route step3 (apache#1276)

* feat: filter redirect plugin in route step3

* feat: add e2e test case

* feat: add comment

* feat: update comment

* fix: omit taobao mirror (apache#1283)

* fix: remove body type json (apache#1287)

* fix: set get called false in the declaration (apache#1281) (apache#1282)

* fix: Support string type for the script field in Route (apache#1289)

* Support string type for script field in Route

Signed-off-by: imjoey <[email protected]>

* Add validating lua code when create/update routes

also improve the test case in unittest and e2e

Signed-off-by: imjoey <[email protected]>

* typo fix and style format

Signed-off-by: imjoey <[email protected]>

* Improve testcases

Signed-off-by: imjoey <[email protected]>

* Addtional check the Script via log in APISIX

Signed-off-by: imjoey <[email protected]>

* ngx.log print log in error.log, instead of access.log

Signed-off-by: imjoey <[email protected]>

* Use ngx.WARN instead of INFO to enable output

Signed-off-by: imjoey <[email protected]>

* chore: sync the latest JSON Schema (apache#1301)

* fix: Client-side URL redirect (apache#1284)

* fix: Client-side URL redirect

* fix: client-side url redirection

add else case

Co-authored-by: liuxiran <[email protected]>

* fix: lint error

* refactor: format codes inside web directory

Co-authored-by: liuxiran <[email protected]>

* fix: Login page bottom white background. (apache#1298)

* fix: Login page bottom white background.

* fix: update

* fix: Switch Language doesn't work. (apache#1306)

* chore: move the authentication middleware into droplet framework  (apache#1296)

* chore: move the authentication middleware into droplet framework (apache#1295)

* fix: ci test

* fix: code style

* update: panic if can't get http.Request

* fix: fix misspell

* fix: fix ci

* fix: fix ci

* doc: change the translate of consumer. (apache#1307)

* docs: add demo site's infomation (apache#1309)

* fix: document link error for plugins serverless-pre-function and serverless-pre-function (apache#1297)

* fix#1260

* Update PluginDetail.tsx

Co-authored-by: 琚致远 <[email protected]>

* feat: i18n (apache#1310)

* fix: i18n

* Update en-US.ts

Co-authored-by: 琚致远 <[email protected]>

* feat: return back the data just created via POST method in manager API (apache#1277)

* return saving object for store.Create

Signed-off-by: imjoey <[email protected]>

* Add backend e2e test for returning from Create-via-POST

Signed-off-by: imjoey <[email protected]>

* Fix incorrect HTTP method

Signed-off-by: imjoey <[email protected]>

* docs: added Good first issue to README (apache#1320)

* fix: ssl config support set labels (apache#1054)

* fix: ssl config support set labels (apache#1050)

* fix: fix e2e test

* fix: ssl e2e test

* fix: fix e2e test

* fix: ssl e2e test

Co-authored-by: 琚致远 <[email protected]>

* feat: implement a way to set etcd client (apache#1323)

* feat: pass context for `Get` and `List` (apache#1324)

* fix: upgrade @umijs/preset-react >= 1.7.11 (apache#1321)

* feat: Add returning value for HTTP PUT and PATCH methods (apache#1322)

* Add returning value for Updating entity (PUT/PATCH)

Signed-off-by: imjoey <[email protected]>

* Fix missing return obj when create-if-not-exist

Signed-off-by: imjoey <[email protected]>

* Fix backend Unit and e2e test

Signed-off-by: imjoey <[email protected]>

* chore: fix spelling (apache#1327)

* chore: add e2e test coverage (apache#1270)

* feat: add domSelector and data (apache#1339)

* align dashboard menu options to the left (apache#1338)

* fix wrong

Co-authored-by: litesun <[email protected]>
Co-authored-by: idbeta <[email protected]>
Co-authored-by: nic-chen <[email protected]>
Co-authored-by: 琚致远 <[email protected]>
Co-authored-by: Radhika <[email protected]>
Co-authored-by: John Bampton <[email protected]>
Co-authored-by: seven dickens <[email protected]>
Co-authored-by: YuanSheng Wang <[email protected]>
Co-authored-by: nic-chen <[email protected]>
Co-authored-by: Peter Zhu <[email protected]>
Co-authored-by: Vinci Xu <[email protected]>
Co-authored-by: Wen Ming <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: fu_changjie <[email protected]>
Co-authored-by: fu_changjie <[email protected]>
Co-authored-by: liuxiran <[email protected]>
Co-authored-by: guoqqqi <[email protected]>
Co-authored-by: Alex Zhang <[email protected]>
Co-authored-by: Alex Zhang <[email protected]>
Co-authored-by: kv <[email protected]>
Co-authored-by: Jinchi Zhou <[email protected]>
Co-authored-by: Joey <[email protected]>
Co-authored-by: JinChen <[email protected]>
Co-authored-by: Kishani Kandasamy <[email protected]>
Co-authored-by: Thanoshan MV <[email protected]>
Co-authored-by: Baoyuan <[email protected]>
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.

5 participants