Routing based on URI AND Method

Hi,
I have two endpoints /service1 and /service2 , each has two different PUT and GET implementations with different port numbers, I can implement a virtualservice to include every endpoint use the -uri match, but how to apply GET and POST for each?

I’ve tried this, but doesn’t seem to be working. what’s wrong?

  - match:
    - uri:
        prefix: /service1
    - http:
        method:
          exact: GET
    route:
    - destination:
        host: get-service1
        port:
          number: 8090
  - match:
    - uri:
        prefix: /service1
    - http:
        method:
          exact: PUT
    route:
    - destination:
        host: put-service1
        port:
          number: 8091
  - match:
    - uri:
        prefix: /service2
    - http:
        method:
          exact: GET
    route:
    - destination:
        host: get-service1
        port:
          number: 8080
  - match:
    - uri:
        prefix: /service2
    - http:
        method:
          exact: PUT
    route:
    - destination:
        host: put-service2
        port:
          number: 8081